When式
CoddyのKotlinジャーニー「基礎」セクションの一部。レッスン 32/93。
チェック対象となる具体的な値が複数ある場合、else if文が長く連なると読みにくくなることがあります。Kotlinでは、値を複数の可能性と照合するための、より読みやすい代替手段としてwhen式が用意されています。
fun main() {
val day = 3
val dayName = when (day) {
1 -> "Monday"
2 -> "Tuesday"
3 -> "Wednesday"
4 -> "Thursday"
5 -> "Friday"
else -> "Weekend"
}
println(dayName) // 出力: Wednesday
}when 式は値を受け取り、それを各分岐と比較します。一致するものが見つかると、対応する結果が返されます。else 分岐は、リストに記載されたケースのいずれにも一致しない値を処理します。
カンマで区切ることで、1つの分岐で複数の値に一致させることもできます。
fun main() {
val day = 6
val type = when (day) {
1, 2, 3, 4, 5 -> "Weekday"
6, 7 -> "Weekend"
else -> "Invalid"
}
println(type) // 出力: Weekend
}値を生成する when は網羅的でなければなりません。考えられるすべての入力に結果が必要です。これらの整数の例には else が必要ですが、true と false の両方の分岐を持つ Boolean の when には必要ありません。
チャレンジ
簡単次の変数が与えられています。
val month = 4when 式を使用して月の番号に基づいて季節を判定し、その結果を season という名前の変数に格納してください。
条件:
- 月が
12、1、2の場合は"Winter"を返す - 月が
3、4、5の場合は"Spring"を返す - 月が
6、7、8の場合は"Summer"を返す - 月が
9、10、11の場合は"Fall"を返す - その他の値の場合は
"Invalid month"を返す
同じ季節に属する月をまとめるために、when の分岐でカンマ区切りの値を使用してください。
season の値を出力してください。
自分で試してみよう
fun main() {
val month = 4
// TODO: 以下にコードを書いてください
// when式を使って月に基づいて季節を判定する
// 結果を 'season' という変数に格納する
// 結果を出力する
println(season)
}このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
基礎のすべてのレッスン
自分で練習してみよう: Kotlinプレイグラウンド