用`this`表示接收器时“标签在Kotlin中的位置

我是Kotlin的新手。 我很好奇在Kotlin中用前缀@或后缀@标记的区别。

我刚刚看到一个写SignInActivity@this的代码,看起来和this@SignInActivity完全一样。

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

我试图在*@this表单上做一些研究,但是我找不到任何参考。 我只能find这个官方文档来演示this@* 。 如果有人能与我分享我应该去的正确的参考,那将是很好的。

SignInActivity@ this只是另一个expression方式,具有定义称为SignInActivity的不必要标签(与实际类名无关)的function。

根据Kotlin语法文档 :

 labelReference (used by atomicExpression, jump) : "@" ++ LabelName ; labelDefinition (used by prefixUnaryOperation, annotatedLambda) : LabelName ++ "@" ; 

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

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

这些expression式可以使用如下:

 loop@ for (i in 1..100) { for (j in 1..100) { if (...) break@loop //jump to loop@ } } 

SignInActivity @这意味着SignInActivity.this(Java)这个@SignInActivity意味着 – 使用SignInActivity上下文而不是本地上下文(通常处于关闭状态)。