Kotlin this詳解及實例
Kotlin this詳解及實例
為了表示當(dāng)前函數(shù)的接收者(receiver), 們使用this表達式:
- 在類的成員函數(shù)中,this指向這個類的當(dāng)前對象實例;
- 在擴展函數(shù)中,或帶接收者的函數(shù)字面值(function literal) 中, this 代表調(diào)用函數(shù)時, 在點號左側(cè)傳遞的接收者參數(shù);
如果this沒有限定符,那么它指向包含當(dāng)前代碼的最內(nèi)層范圍.如果想要指向其他范圍內(nèi)的this,需要使用標(biāo)簽限定符。
帶限定符的this
為了訪問更外層范圍(比如 類, 或 擴展函數(shù), 或有標(biāo)簽的 帶接受者的函數(shù)字面值)內(nèi)的 this, 我們使用this@label , 其中的 @label 是一個標(biāo)簽, 代表我們想要訪問的this所屬的范圍:
class A { // 隱含的標(biāo)簽 @A
inner class B { // 隱含的標(biāo)簽 @B
fun Int.foo() { // 隱含的標(biāo)簽 @foo
val a = this@A // 指向 A 的 this
val b = this@B // 指向 B 的 this
val c = this // 指向 foo() 函數(shù)的接受者, 一個 Int 值
val c1 = this@foo // 指向 foo() 函數(shù)的接受者, 一個 Int 值
val funLit = lambda@ fun String.() {
val d = this // 指向 funLit 的接受者
}
val funLit2 = { s: String ->
// 指向 foo() 函數(shù)的接受者, 因為包含當(dāng)前代碼的 Lambda 表達式?jīng)]有接受者
val d1 = this
}
}
}
}
感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!
相關(guān)文章
Mybatis基于TypeHandler實現(xiàn)敏感數(shù)據(jù)加密
業(yè)務(wù)場景中經(jīng)常會遇到諸如用戶手機號,身份證號,銀行卡號,郵箱,地址,密碼等等信息,屬于敏感信息,本文就來介紹一下Mybatis基于TypeHandler實現(xiàn)敏感數(shù)據(jù)加密,感興趣的可以了解一下2023-10-10
SpringBoot?全局線程池配置及應(yīng)用小結(jié)
為了提高應(yīng)用程序的性能和響應(yīng)速度,線程池是一個非常重要的工具,本文主要介紹了Spring?Boot?全局線程池配置及應(yīng)用,具有一定的參考價值,感興趣的可以了解一下2024-05-05
深入Spring Boot之ClassLoader的繼承關(guān)系和影響
這篇文章主要介紹了深入Spring Boot之ClassLoader的繼承關(guān)系和影響,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-06-06
Java 文創(chuàng)商城系統(tǒng)的實現(xiàn)流程
讀萬卷書不如行萬里路,只學(xué)書上的理論是遠(yuǎn)遠(yuǎn)不夠的,只有在實戰(zhàn)中才能獲得能力的提升,本篇文章手把手帶你用java+SSM+mysql+maven+tomcat實現(xiàn)一個文創(chuàng)商城系統(tǒng),大家可以在過程中查缺補漏,提升水平2021-11-11
java?9大性能優(yōu)化經(jīng)驗總結(jié)
這篇文章主要介紹了java?9大性能優(yōu)化經(jīng)驗總結(jié),包括:Java代碼優(yōu)化,數(shù)據(jù)庫優(yōu)化,分布式緩存,異步化,Web前段,搜索引擎優(yōu)化等需要的朋友可以參考下2023-02-02

