[关闭]
@cxm-2016 2017-01-28T22:53:13.000000Z 字数 761 阅读 1687

Kotlin (二十五)——this 表达式

Kotlin



this 表达式

为了表示当前函数的 接收者(receiver), 我们使用 this{: .keyword } 表达式:

如果 this{: .keyword } 没有限定符, 那么它指向 包含当前代码的最内层范围. 如果想要指向其他范围内的 this{: .keyword }, 需要使用 标签限定符:

带限定符的 this{: .keyword }

{:#qualified}

为了访问更外层范围(比如 类, 或 扩展函数,
或有标签的 带接受者的函数字面值)内的 this{: .keyword }, 我们使用 this@label, 其中的 @label 是一个 标签, 代表我们想要访问的 this{: .keyword } 所属的范围:

  1. class A { // 隐含的标签 @A
  2. inner class B { // 隐含的标签 @B
  3. fun Int.foo() { // 隐含的标签 @foo
  4. val a = this@A // 指向 A 的 this
  5. val b = this@B // 指向 B 的 this
  6. val c = this // 指向 foo() 函数的接受者, 一个 Int 值
  7. val c1 = this@foo // 指向 foo() 函数的接受者, 一个 Int 值
  8. val funLit = lambda@ fun String.() {
  9. val d = this // 指向 funLit 的接受者
  10. }
  11. val funLit2 = { s: String ->
  12. // 指向 foo() 函数的接受者, 因为包含当前代码的 Lambda 表达式没有接受者
  13. val d1 = this
  14. }
  15. }
  16. }
  17. }
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注