2017-11-22 4 views
0

私はkotlinに新しいですで、私は上記のコードでstrAction.contains(「グリッド」を次のコードstring.containsを使用することができません()kotlin `when`表現

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

を使用するにはいくつかの方法を試してみました)この行は、互換性のないタイプ

enter image description here

+0

私はそこにあなたの助けのためにdownvote – YoLo

答えて

2

が、これはからwhen(strAction)パラメータを削除してみていること私にエラーを示しています

val strAction = "Grid"  

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

ありがとうですが、それはまだwhen'必要はありません 'から** **' strAction'を削除@YoLo ANS – YoLo

+0

が直面している私のために働いていなかった理由を理解しませんそれを渡す – Prem

+1

を更新チェック@YoLo同じ問題 – Prem

1

あなたのwhenで唯一のケースがある場合strAction

val strAction = "Grid" 

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

を渡す必要はありません、私の代わりにifを使用することをお勧めします。それはすでにあなたがそこでやろうとしていることです:

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

さらに短いですね。

Stringwhen)のスイッチをオンにしても、Booleanの場合は正しく動作しません。しかし、このトリックは何をするだろうか:

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

しかし、やはりifを実行してください。

1

他の回答は、問題が実際にどのような問題を解決する方法を説明しなく。あなたのコードはstrAction.contains("Grid")を算出する(Booleanになる)、その後この値strActionを比較します。私。それは型に互換性がないので、彼らは等しくすることができません

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

と同等ですので、このブランチが取られることはありませんでしたし、コンパイラはこれを伝えます。

関連する問題