La identidad de KotlinEquals no funciona como se esperaba

De acuerdo con la reference de kotlin, este fragment de código debe imprimir "verdadero"

val a: Int = 10000 print(a identityEquals a) 

Pero cuando lo bash (la versión es 0.12.1218), imprime "falso". ¿Por qué?

29/07/2015 ACTUALIZACIÓN

Si lo dejamos en [-128 ~ 127], imprime "verdadero". Como dijo Andrey, debería usar === .

identityEquals se depreciará pronto, use ===

Encontré la explicación de Andrey Breslav.

La razón es que bajo las capuchas Int no es un tipo de reference: se representa por una primitiva int, pero cuando se llama a identityEquals, ¿quién firma es Any? .identityEquals (Any?), Ambos operandos se ponen en una caja, y como resultado tenemos dos objects diferentes Arreglaremos esto presentando sobrecargas de primitivas de identidad para Java.

Hasta ahora todavía no se ha solucionado. La reference oficial debería explicar esto. Me ha preocupado por varias horas.

  • ¿Por qué no se puede escribir un parámetro en Kotlin que tenga otros límites si está limitado por otro parámetro de tipo?
  • ¿Regex o comodín en la statement de Kotlin cuando?
  • ¿Hay alguna manera de tener un file privado constante en Kotlin?
  • Cómo establecer los parameters de layout en una imageView dentro de GridView en Android
  • Kotlin addTextChangeListener lambda?
  • ¿Cómo acceder a "Activity.this" en Kotlin?
  • Construir un contenedor autoejecutable con Gradle y Kotlin
  • ¿Cómo poner los files de res del proyecto en el contenedor en la misma carpeta?
  • ¿Se puede utilizar javascript generado a partir de fonts de Kotlin en JVM?
  • Kotlin comstackndo desde línea de command
  • Subclass de AsyncTask en Kotlin: no se puede usar el parámetro constructor principal dentro de onPostExecute