為了表示當前接收者,我們使用this
表達式:
- 在類的成員中,
this
指的是當前類的對象 - 在擴展函數(shù)或具有接收者的函數(shù)字面值巨缘,
this
指的是.
操作符左側的接收者參數(shù)
如果this
沒有修飾符尿赚,它歸屬于最內層封閉作用域散庶。為了讓this
歸屬于其他作用域,可以使用標簽修飾符:
被修飾的this(Qualified this)
為了在外部作用域(類凌净,擴展函數(shù)悲龟,或被標簽的帶有接收者的字面函數(shù))訪問this
,我們使用this@label
冰寻,@label
是一個代指this
來源的標簽:
class A { // implicit label @A
inner class B { // implicit label @B
fun Int.foo() { // implicit label @foo
val a = this@A // A's this
val b = this@B // B's this
val c = this // foo()'s receiver, an Int
val c1 = this@foo // foo()'s receiver, an Int
val funLit = lambda@ fun String.() {
val d = this // funLit's receiver
}
val funLit2 = { s: String ->
// foo()'s receiver, since enclosing lambda expression
// doesn't have any receiver
val d1 = this
}
}
}
}