¿Cómo comparo un Corto con un Int en Kotlin?

Tengo una variable Short que necesito verificar el valor de. Pero el comstackdor se queja de que Operator '==' cannot be applied to 'Short' and 'Int' cuando hago una verificación igual simple:

 val myShort: Short = 4 if (myShort == 4) // <-- ERROR println("all is well") 

Entonces, ¿cuál es la forma más simple, "más limpia" de hacer esto igual?

Aquí hay algunas cosas que probé (ninguna de las cuales me gusta, para ser sincera).

El primero arroja el integer 4 a un corto (se ve raro, invocando una function en un número primitivo)

 val myShort: Short = 4 if (myShort == 4.toShort()) println("all is well") 

El siguiente arroja el corto a un int (no debería ser necesario, ahora tengo dos ints cuando realmente no debería necesitar ninguno)

 val myShort: Short = 4 if (myShort.toInt() == 4) println("all is well") 

Básicamente, la forma más "limpia" de compararlo con una pequeña constante es myShort == 4.toShort() .

Pero si desea comparar un Short con una variable de tipo más ancho, convierta myShort en myShort lugar para evitar el desbordamiento: myShort.toInt() == someInt .

se ve raro, invocando una function en un número primitivo

Pero en realidad no llama a las funciones, están intrinsecadas y comstackdas a bytecode que opera los numbers de una manera que es natural para JVM, por ejemplo, el bytecode para myShort == 4.toShort() es:

 ILOAD 2 // loads myShort ICONST_4 // pushes int constant 4 I2S // converts the int to short 4 IF_ICMPNE L3 // compares the two shorts 

Ver también: otra pregunta y respuesta sobre conversiones numéricas .

  • La documentation de Kotlin no admite tags como '<p>'.
  • Cómo establecer el valor de propiedad pnetworkingeterminado de Kotlin a `this`
  • Kotlin Decompiler genera código erróneo - ¿Es posible prevenir?
  • Cómo convertir Array <T?>? en Array <T> en Kotlin
  • Genéricos de Kotlin e inferencias de types incorrectos
  • ¿Los nativos de kotlin tienen destructores?
  • Al eliminar de la list arroja IndexOutOfBoundsException mientras itera: Java-> Kotlin
  • Kotlin REST a las definiciones de mecanografía
  • PsiTreeVisitor: ¿Cómo averiguar el tipo de receptor KtCallExpression?
  • Cómo implementar interfaces parametrizadas en Kotlin
  • Propiedades del constructor Kotlin y llamar a diferentes constructores de superclass