当用"this"表示接收器时,`@`标签在Kotlin中的位置

viz*_*viz 7 grammar this kotlin

我是Kotlin的新手.我很好奇thisKotlin中带有前缀@或后缀的区别@.

我刚看到一个写入的代码SignInActivity@this,它似乎与...完全相同this@SignInActivity.

这两个完全一样吗?如果没有,两者有什么区别?

我试图对*@this表单进行一些研究,但我找不到任何关于它的参考.所有我能找到的这个官方文档这表明this@*.如果有人能与我分享我应该去的正确参考,那将是很好的.

小智 6

SignInActivity@ this只是另一个表达式this,具有定义不必要的标签SignInActivity(与实际类名无关)的功能this.

根据Kotlin语法文档:

labelReference (used by atomicExpression, jump)
   : "@" ++ LabelName
   ;
labelDefinition (used by prefixUnaryOperation, annotatedLambda)
  : LabelName ++ "@"
  ;
Run Code Online (Sandbox Code Playgroud)

hello@只是一个名为"hello"的标签(用于返回和跳转),

而是@hello标记的循环或块的参考.

这些表达式的组合可以使用如下:

loop@ for (i in 1..100) {
    for (j in 1..100) {
        if (...) break@loop //jump to loop@
   }
}
Run Code Online (Sandbox Code Playgroud)


Max*_*off 5

SignInActivity@this 表示 SignInActivity.this (Java) this@SignInActivity 表示 - 使用 SignInActivity 上下文而不是本地上下文(通常位于闭包中)。