Posición de la label `@` en Kotlin cuando se denota el receptor con `this`

Soy un novato en Kotlin. Tengo curiosidad sobre la diferencia de labelr this en Kotlin con el prefijo @ o postfix @ .

Acabo de ver un código que escribe SignInActivity@this , que parece funcionar exactamente igual que this@SignInActivity .

¿Son estos dos exactamente lo mismo? Si no, ¿cuál es la diferencia entre los dos?

Intenté investigar un poco sobre *@this formulario, pero no pude encontrar ninguna reference al respecto. Todo lo que pude encontrar fue este documento oficial que demuestra this@* . Sería bueno si alguien pudiera compartirme la reference correcta a la que debería ir.

SignInActivity@ this es solo otra expresión para this , con la funcionalidad de definir una label innecesaria llamada SignInActivity (que no tiene nada que ver con el nombre de class real) para this .

De acuerdo con la documentation de la gramática de Kotlin :

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

hello@ es solo una label con el nombre "hola" (para devoluciones y saltos ),

mientras que @hello es una reference para el bucle o bloque labeldo.

Estas expresiones combinadas se pueden usar de la siguiente manera:

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

SignInActivity @ esto significa SignInActivity.this (Java) this @ SignInActivity significa – usar el context SignInActivity en lugar de un context local (normalmente está en cierres).

  • Obtener class acompañante en un object complementario
  • ¿Cómo se representan las tags de los componentes web en los frameworks html de Kotlin?
  • Iconos de IntelliJ y Android Studio para files de Kotlin
  • Métodos estáticos como en la aplicación de Android con kotlin
  • Enviar request a otra URL de Ktor
  • ¿Cómo adjunto fonts para Kotlin en Android Studio?
  • Borre pasos para importar una biblioteca C nativa en Kotlin usando CLion
  • ¿Puede elegir la versión de Android Studio kotlin?
  • No se puede acceder a los componentes internos desde la fuente de testing con Android
  • ¿Es posible ejecutar AsyncWebRequest a través de una llamada del browser?
  • Vista personalizada de Android renderizado lento con background dibujable