Невозможно использовать string.contains () в выражении kotlin `when`

Я новичок в kotlin, я пробовал несколько способов использовать следующий код

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

В приведенном выше коде strAction.contains («Grid») эта строка показывает мне ошибку, что Несовместимый тип

введите описание изображения здесь

Попробуйте удалить параметр when(strAction) с того when

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

Если в вашем случае есть только один случай, я бы рекомендовал использовать, if вместо этого. Это уже то, что вы пытаетесь сделать там:

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

Даже короче, не так ли?

Только для записи: вы включаете String ( when ), но имеете Boolean случаи, которые не будут работать. Что бы сделать трюк, хотя:

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

Но опять же, if .

Вам не нужно передавать strAction

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

В других ответах объясняется, как исправить проблему, но не проблема. Ваш код вычисляет strAction.contains("Grid") (который будет Boolean ), а затем сравнивает strAction с этим значением . Т.е. это эквивалентно

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

Они не могут быть равными, потому что типы несовместимы, поэтому эта ветка никогда не может быть взята, и компилятор говорит об этом.