La "coincidencia de patrón" no funciona para la cláusula Int (twig)

Tengo este código en Kotlin (que comencé a aprender):

package io.shido.learning import java.time.Instant fun typeCheck(any: Any): Any = when (any) { (any is Int && any < 10) -> "(small) integer" is Int -> "integer" is Double -> "double" is String -> "string" else -> "another Any" } fun main(args: Array<String>) { println("type check for: 5 (${typeCheck(5)})") println("type check for: 20 (${typeCheck(20)})") println("type check for: 56.0 (${typeCheck(56.0)})") println("type check for: \"a string\" (${typeCheck("a string")})") println("type check for: Instant (${typeCheck(Instant.now())})") } 

… así que esperaba que typeCheck(5) devolviera (small) integer y no integer como lo hace actualmente.

¿Alguien tiene alguna idea? La primera twig es true hecho para 5 .

enter image description here

Cuando pasa un argumento, when comtesting si el argumento coincide con los valores en las twigs, y 5 no coincide con los cálculos true en la primera twig. Entonces, básicamente, puedes arreglar tu código de esta manera:

 fun typeCheck(any: Any): Any = when { (any is Int && any < 10) -> "(small) integer" any is Int -> "integer" any is Double -> "double" any is String -> "string" else -> "another Any" } 

o

 fun typeCheck(any: Any): Any = when (any) { in 0..10 -> "(small) integer" is Int -> "integer" is Double -> "double" is String -> "string" else -> "another Any" } 

Ver cuando la expresión

  • Kotlin: Convertir list grande a sublist de tamaño de partición establecido
  • Controlador de enlace con clic en TextView
  • Cómo crear instancia de class genérica pasando una reference de método en constructor con kotlin
  • El @Rule> debe ser público ValidationError en Kotlin Junit test
  • Hibernate ignora el tipo de búsqueda 'vago' y carga las properties de inmediato
  • Kotlin: Cómo convertir la testing que usa Thread.sleep a RxJava TestScheduler
  • Es `foo como? Foo` un equivalente completo de 'foo como Foo? `En kotlin?
  • RecyclerView: implementa correctamente la eliminación de SnackBar UNDO (Kotlin)
  • ¿Se puede implementar Applicative "muy bien" en kotlin?
  • Kotlin i.inc () ¿10 veces más lento que i ++?
  • Protocolo Buffer de soporte gradle para Android Kotlin no funciona?