用`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上下文而不是本地上下文(通常处于关闭状态)。