前提・実現したいこと
Kotlinのwhen文でis Stringによる判定で条件分岐したい。
発生している問題・エラーメッセージ
Kotlinスタートブックという本でKotlinを学習しています。
その中でKotlinのwhen文は、Javaのswitch文のように特定の数値だけでなく、様々な条件文を選択肢に取れると書かれていました。
その例としてis Stringによる判定が含まれていたので、早速コードを写経してみたのですがエラー//errormessage1が出てしまいます。
これではis Stringによる条件分岐ができないのですが、どのようにしたら上手くいくか、また上手くいかない要因は何かを知りたいです。
Incompatible types: String and Int //errormessage1 'when' with subject should be used more... //errormessage2
該当のソースコード
Kotlin
1fun p2(){ 2 val y=17 //error 3 val blank=when(y){ 4 is String->y.isBlank() 5 else->true 6 } 7 println(blank) 8 9 var z:Int=88 10 val grade=when{ 11 z>=90->'A' 12 z>=80->'B' 13 z>=70->'C' 14 z>=60->'D' 15 else->'F' 16 } 17 println(grade) 18}
試したこと
//errorのy=17を、y="abc"にしてみた所成功。
最初は、when(y)のカッコ内のパラメータy(Int)と、条件文is String(Boolean)を比較しているからエラーが出ているのだと思ったのですが、試しにString型の"abc"に変えて見た所通ってしまいました。
そもそもこの推測はerrormessage1に沿ってはいないのですが。
//when(y){is String〜}を、when{y is String->〜}としてみた所失敗
下でwhen{z>=〜}としていたのでこれで通るのではと思いましたが、今度は//errormessage2が表示され、通りませんでした。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/08/03 05:50
2018/08/03 06:29
2018/08/04 16:18