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).

  • Muestra datos de una database MySQL con android studio
  • Dependencias faltantes o conflictivas para Anko floatingActionButton
  • Problemas de configuration de Kotlin Room en Android Studio
  • Kotlin utiliza la interfaz de callback de Java
  • Obtener un error relacionado con el certificate al download Kotlin en Android Studio
  • Mover la definición de ViewModel al método de nivel de package
  • ¿Cuál es la magia del editor detrás de las extensiones de Kotlin para Android para Views?
  • ClassCastException con el método bindService de ServiceTestRule
  • ¿Hay alguna forma de cargar las bibliotecas de time de ejecución además de ponerlas en src / main / jniLibs?
  • Pasar parameters a un getter personalizado en kotlin
  • Kotlin: MyClass :: class.java vs this.javaClass