式としてのwhen
whenから値を返します
「式としてのwhen」はCoddyKit上の無料Kotlin Academyレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはKotlin Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Kotlin Academyコースには全4レッスンが含まれています。
式としてのwhen
Kotlinのwhenは、単なるswitch文ではありません。式であるため、値を生成して代入したり返したりできます。
これにより、分岐ロジックを簡潔で読みやすく記述できます。
値を返す
式として使用すると、各分岐が結果を提供します。一致した分岐の値が、when式全体の結果になります。
fun main() {
val day = 3
val name = when (day) {
1 -> "Monday"
2 -> "Tuesday"
3 -> "Wednesday"
else -> "Other"
}
println(name)
}elseが必要
式として使用する場合、whenは網羅的でなければなりません。任意の値を扱う場合は、else分岐が必要です。
elseがなければ、コンパイラーは値が生成されることを保証できません。
fun grade(score: Int): String = when {
score >= 90 -> "A"
score >= 80 -> "B"
else -> "C"
}
fun main() {
println(grade(85))
}1つの分岐に複数の値
複数の値をコンマで区切ると、1つの分岐でまとめて扱えます。
同じ本体を繰り返すよりも、すっきり記述できます。
fun main() {
val day = 6
val type = when (day) {
1, 2, 3, 4, 5 -> "Weekday"
6, 7 -> "Weekend"
else -> "Invalid"
}
println(type)
}引数なしのwhen
対象を省略すると、各分岐がブール条件になります。
if/else ifの連鎖を、整ったブロックに置き換えられます。
fun main() {
val temp = 18
val feel = when {
temp < 0 -> "Freezing"
temp < 15 -> "Cold"
temp < 25 -> "Mild"
else -> "Hot"
}
println(feel)
}分岐での範囲
inを使って、分岐で範囲を判定できます。
数値を範囲ごとに分類する処理を、自然に表現できます。
fun main() {
val score = 73
val band = when (score) {
in 0..59 -> "Fail"
in 60..79 -> "Pass"
in 80..100 -> "Excellent"
else -> "Invalid"
}
println(band)
}分岐での型チェック
isを使って、分岐で型をチェックできます。
各分岐の結果は異なる型でもよく、whenは共通の型を返します。
fun describe(x: Any): String = when (x) {
is Int -> "Integer"
is String -> "Text"
else -> "Unknown"
}
fun main() {
println(describe(42))
println(describe("hi"))
}分岐ブロック
分岐を複数の文からなるブロックにできます。ブロックの最後の式が、その値になります。
fun main() {
val n = 5
val result = when {
n > 0 -> {
val doubled = n * 2
"Positive, doubled is " + doubled
}
else -> "Non-positive"
}
println(result)
}whenを直接返す
単一式本体を使って、関数からwhen式を直接返すことができます。
これはKotlinで非常によく使われる、すっきりした書き方です。
fun sign(n: Int): String = when {
n > 0 -> "positive"
n < 0 -> "negative"
else -> "zero"
}
fun main() {
println(sign(-4))
}対象を捕捉する
whenの内部で対象を宣言すると、各分岐からその対象を利用できます。
一時的な値のスコープを必要最小限に保てます。
fun describeLength(text: String): String = when (val len = text.length) {
0 -> "empty"
in 1..5 -> "short (" + len + ")"
else -> "long (" + len + ")"
}
fun main() {
println(describeLength("hello"))
}まとめ
式としてのwhenは、値を生成する強力な仕組みです。
- 各分岐が結果を提供します
elseによって網羅的になります- コンマ、範囲、型、ブロックをサポートします
fun ticketPrice(age: Int): Int = when {
age < 6 -> 0
age < 18 -> 10
age >= 65 -> 8
else -> 15
}
fun main() {
println(ticketPrice(4))
println(ticketPrice(70))
}理解度チェック
式としてのwhenについての理解度を確認しましょう。
まとめ
whenを式として使う方法を学びました。
- 一致した分岐の値を返します
- 網羅的にするには
elseが必要です - コンマ、範囲、型チェック、ブロックをサポートします
次は、スマートキャストによってコンパイラーが型を絞り込む仕組みを学びます。
よくある質問
「式としてのwhen」レッスンは無料ですか?
はい。「式としてのwhen」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Kotlin Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Kotlin Academyコースには全4レッスンが含まれています。
「式としてのwhen」で何を学びますか?
whenから値を返します ブラウザで直接実行するハンズオンコードでKotlin Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Kotlin Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのKotlin Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。
「式としてのwhen」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このKotlin Academyレッスンでコードを書いて実行できますか?
はい。すべてのKotlin Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。