【Kotlin】when式で条件分岐させる方法!複数の条件を指定方法
この記事からわかること
- Kotlin/Android Studioでwhenの使い方
- switch文との違い
- 範囲指定や未満、以上など
- 列挙型を指定する
index
[open]
\ アプリをリリースしました /
友達や家族の誕生日をメモ!通知も届く-みんなの誕生日-
posted withアプリーチ
参考文献:公式リファレンス:WebView でのウェブアプリの作成
環境
- Android Studio:Flamingo
- Kotlin:1.8.20
when式の使い方
Kotlinのwhen
式はJavaのswitch
文と同じような役割を持つ制御フローです。使い方はwhen
の後の()
内に条件対象の値を渡し、{}
の中に条件値とマッチした時の処理を->
で繋いで記述します。
when (条件) {
値1 -> 処理1
値2 -> 処理2
...
else -> デフォルトの処理
}
whenはいずれかの分岐条件に一致し処理が行われるまで上から順番に照合を始め、条件にマッチした値があればその処理を実行して照合を終了します。そのためbreak
を明示的に記述しなくても良いようになっています。
使用例
val value = 1
when (value) {
0 -> print("0")
1 -> print("1")
2 -> print("2")
3 -> print("3")
else -> print("other")
}
複数の条件を指定する
複数の条件を指定する際はカンマ区切りで条件を羅列します。
val value = 1
when (value) {
0 -> print("0")
1,3,5 -> print("1,3,5")
2,4,6 -> print("2,4,6")
else -> print("other")
}
複数の条件にマッチする場合のみ分岐する
複数の条件をマッチした場合を指定する際は&&
を使用して指定します。
val value = 1
val value2 = 2
when {
value == 1 && value2 == 2 -> print("1.2")
else -> print("other")
}
when (値)
ではなくwhen
のみにすることでwhen
内でも変数の値を参照できるようになります。
範囲で分岐する
決め内ではなく、範囲で分岐させるにはin X..X
で指定します。
val value = 1
when (value) {
0 -> print("0")
in 1..10 -> print("1~10")
in 11..20 -> print("11~20")
else -> print("other")
}
比較演算子を使って分岐する
「〇〇以上」や「〇〇未満」などは比較演算子(>
や<
)を使って指定します。
val value = 20
when {
value > 10 -> print("10以上")
value < 10 -> println("10未満")
else -> print("other")
}
列挙型で分岐させる
列挙型を指定することも可能になっており、その際は条件分岐に全てのケースが網羅されていないと'when' expression must be exhaustive, add necessary 'Kotlin' branch or 'else' branch instead
といったエラーになってしまいます。
enum class Language {
HTML, PHP, Swift , Kotlin
}
val language = Language.Swift
val message = when (language) {
Language.HTML -> "Webページ開発"
Language.PHP -> "サーバーサイド開発"
Language.Swift -> "iOSアプリ開発"
Language.Kotlin -> "Androidアプリ開発"
}
print(message)
またwhen
式は上記のように結果を変数に格納することも可能です。
関数などを条件値に渡す
条件値には関数などを指定することもできます。
例1
val x = 2
when (x) {
x.toInt() -> print("Int型")
else -> print("Int型でない")
}
例2
fun validation() :Boolean {
return true
}
when {
validation() -> print("true")
else -> print("false")
}
まだまだ勉強中ですので間違っている点や至らぬ点がありましたら教えていただけると助かります。
ご覧いただきありがとうございました。