它确实是一个标签,并且在该示例中特别有用,因为它标记了一个匿名函数。您将标签用于限定引用(如 this)。
在以下示例中,lambda 定义了一个内部方法nested,它可能希望从funLit 访问this。由于它是匿名的,我们需要对其进行标记,lambda 是一个任意标识符。
fun main() {
val funLit = lambda@ fun String.() {
println("this: " + this)
println("this@lambda: " + this@lambda)
fun String.nested() {
println("this in String.nested(): " + this)
println("this@nested in String.nested(): " + this@nested)
println("this@lambda in String.nested(): " + this@lambda)
}
"nested".nested()
}
"funLit".funLit()
}
运行它可以非常清楚地显示 this 使用限定符引用的内容。
this: funLit
this@lambda: funLit
this in String.nested(): nested
this@nested in String.nested(): nested
this@lambda in String.nested(): funLit
这是一个游乐场链接:https://pl.kotl.in/SJrlUs6LE