Menu
Coddy logo textTech

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 が必要ですが、truefalse の両方の分岐を持つ Boolean の when には必要ありません。

challenge icon

チャレンジ

簡単

次の変数が与えられています。

val month = 4

when 式を使用して月の番号に基づいて季節を判定し、その結果を season という名前の変数に格納してください。

条件:

  • 月が 1212 の場合は "Winter" を返す
  • 月が 345 の場合は "Spring" を返す
  • 月が 678 の場合は "Summer" を返す
  • 月が 91011 の場合は "Fall" を返す
  • その他の値の場合は "Invalid month" を返す

同じ季節に属する月をまとめるために、when の分岐でカンマ区切りの値を使用してください。

season の値を出力してください。

自分で試してみよう

fun main() {
    val month = 4
    
    // TODO: 以下にコードを書いてください
    // when式を使って月に基づいて季節を判定する
    // 結果を 'season' という変数に格納する
    
    
    // 結果を出力する
    println(season)
}
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

基礎のすべてのレッスン

自分で練習してみよう: Kotlinプレイグラウンド