我是 Kotlin 的新手。我很好奇 Kotlin 中带有前缀 @
或后缀 @
的标记 this
的区别。
我刚刚看到了一个编写SignInActivity@this
的代码,它的工作方式似乎与this@SignInActivity
完全相同。
这两个是一回事吗?如果不是,这两者有什么区别?
我试图对 *@this
表单进行一些研究,但找不到任何引用。我只能找到 this official doc它演示了 this@*
。如果有人能与我分享我应该去的正确引用,那就太好了。
最佳答案
SignInActivity@this
只是 this
的另一个表达式,具有定义一个名为 SignInActivity
的不必要标签的功能(与this
.
根据Kotlin grammar documentation :
labelReference (used by atomicExpression, jump)
: "@" ++ LabelName
;
labelDefinition (used by prefixUnaryOperation, annotatedLambda)
: LabelName ++ "@"
;
hello@
只是一个名为“hello”的标签(对于 Returns and Jumps),
而 @hello
是标记循环或 block 的引用。
这些表达式组合起来可以如下使用:
loop@ for (i in 1..100) {
for (j in 1..100) {
if (...) break@loop //jump to loop@
}
}
关于kotlin - 当用 `@` 表示接收者时, `this` 标签在 Kotlin 中的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47626592/