No se puede usar string.contains () en la expresión de kotlin `when`

Soy nuevo en kotlin, he intentado varias forms de usar el siguiente código

val strAction = "Grid" when(strAction){ strAction.contains("Grid")->println("position is 1") } 

En el código anterior strAction.contains ("Grid"), esta línea me muestra un error que indica que es un tipo incompatible.

enter image description here

Intente eliminar este parámetro when(strAction) desde

 val strAction = "Grid" when { strAction.contains("Grid") -> println("position is 1") } 

Si solo hay un caso en su when , le recomendaría usarlo en if lugar. Eso es lo que estás tratando de hacer allí:

 val strAction = "Grid" if(strAction.contains("Grid")){ println("position is 1") } 

Incluso más corto, ¿no?

Solo para el logging: enciende un String (en when ) pero tiene casos Boolean , que no funcionarán. Lo que haría el truco, sin embargo:

 val strAction = "Grid" when(strAction.contains("Grid")){ true->println("position is 1") } 

Pero de nuevo, haz if .

No es necesario pasar strAction

 val strAction = "Grid" when { strAction.contains("Grid") -> println("position is 1") } } 

Las otras respuestas explican cómo solucionar el problema, pero no cuál es realmente el problema. Su código calcula strAction.contains("Grid") (que será Boolean ) y luego compara strAction con este valor . Es decir, es equivalente a

 if (strAction == strAction.contains("Grid")) { println("position is 1") } 

No pueden ser iguales porque los types son incompatibles, por lo que esta twig nunca podría tomarse y el comstackdor le dice esto.

  • Cómo crear variables en el context principal
  • Kotlin cuádruple, quíntuple, etc. para desestructurar
  • No se puede ejecutar la aplicación JavaFX - Kotlin
  • Android RecyclerView Manejo de datos usando Kotlin: índice de cambio de filas después de la modificación
  • Custom Glide ModelLoader para imágenes base64
  • Cómo usar Kotlin coroutines await () en el hilo principal
  • Por qué los numbers que aceptan nulos no son para preservar la identidad
  • Convertir la function de raíz imperativa en estilo funcional en kotlin
  • Genéricos y class abstracta en Kotlin
  • Los literales de class Kotlin con el lado izquierdo vacío aún no son compatibles.
  • No se puede encontrar el cuerpo de destino después de ejecutar una aplicación web de Jfinal con kotlin