为了表示当前接收者,我们使用this
表达式:
- 在类的成员中,
this
指的是当前类的对象 - 在扩展函数或具有接收者的函数字面值,
this
指的是.
操作符左侧的接收者参数
如果this
没有修饰符,它归属于最内层封闭作用域。为了让this
归属于其他作用域,可以使用标签修饰符:
被修饰的this(Qualified this)
为了在外部作用域(类,扩展函数,或被标签的带有接收者的字面函数)访问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
}
}
}
}