言語
日本語
English

Caution

お使いのブラウザはJavaScriptが無効になっております。
当サイトでは検索などの処理にJavaScriptを使用しています。
より快適にご利用頂くため、JavaScriptを有効にしたうえで当サイトを閲覧することをお勧めいたします。

Kotlin辞典

  1. トップページ
  2. Kotlin辞典
  3. if 式

if 式

対応: Kotlin 1.0(2016)

Kotlin の『if』は文(statement)ではなく式(expression)として使えます。条件分岐の結果を変数に代入したり、関数の戻り値として直接返すことができます。

構文

// 文として使う基本形
if (条件) {
    // 処理
} else if (条件) {
    // 処理
} else {
    // 処理
}

// 式として使う場合(値を返す)
val 変数 = if (条件) 値A else 値B

構文一覧

構文概要
if (条件)条件が true のときブロック内を実行します。
else if (条件)直前の条件が false のとき、追加の条件を評価します。
elseすべての条件が false のときに実行されるブロックです。
if 式ブロックの最後の式が値として返されます。三項演算子の代わりに使います。

サンプルコード

sample_if_expression.kt
fun main() {
    val score = 75

    // 基本的な if / else if / else
    if (score >= 90) {
        println("優秀です。")
    } else if (score >= 60) {
        println("合格です。")
    } else {
        println("不合格です。")
    }

    // if 式として変数に代入する(三項演算子の代わり)
    val result = if (score >= 60) "合格" else "不合格"
    println(result)

    // ブロックを使う場合、最後の式が値になる
    val grade = if (score >= 90) {
        println("優秀!")
        "A"
    } else if (score >= 70) {
        println("良好!")
        "B"
    } else {
        "C"
    }
    println(grade)

    // 関数の return でも if 式が使える
    val x = 10
    val abs = if (x >= 0) x else -x
    println("絶対値: $abs")

    // null チェックにも使える
    val name: String? = "Kotlin"
    val greeting = if (name != null) "こんにちは、$name" else "名前がありません"
    println(greeting)
}
if_expression.kt
kotlinc if_expression.kt -include-runtime -d if_expression.jar
java -jar if_expression.jar
合格です。
合格
良好!
B
絶対値: 10
こんにちは、Kotlin

よくあるミス

sample_if_mistakes.kt
fun main() {
    val score = 75

    // 式として使うのに else を書かない
    // val grade = if (score >= 60) "合格" // コンパイルエラー(else が必要)

    // ブロック形式で最後の式以外を戻り値と勘違いする
    val label = if (score >= 90) {
        println("優秀") // この println は戻り値ではない
        "A" // これが戻り値
    } else {
        "B"
    }
    println(label) // B

    // 式ではなく文として書いて変数に代入しようとする
    // var result: String
    // if (score >= 60) result = "合格" else result = "不合格" // これは動くが冗長
    // val result2 = if (score >= 60) "合格" else "不合格" // こちらが Kotlin らしい書き方

    // Unit を返すブロックを式として使う
    // val x = if (score > 0) println("正") else println("非正")
    // x の型は Unit になる。意図せず Unit を受け取るケースに注意
    val x = if (score > 0) println("正") else println("非正")
    println(x) // kotlin.Unit
}

コンパイルして実行すると次のようになります。

kotlinc sample_if_mistakes.kt -include-runtime -d sample_if_mistakes.jar
java -jar sample_if_mistakes.jar
B
正
kotlin.Unit

概要

Kotlin には Java の三項演算子(『? :』)がありません。その代わりに『if』を式として使うことで同じ処理を書けます。式として使う場合は必ず『else』ブランチが必要です。『else』がないと値を確定できないためコンパイルエラーになります。

複数条件の分岐には『when 式』が適しています。Nullable 型との組み合わせには『?: エルビス演算子』も便利です。

記事の間違いや著作権の侵害等ございましたらお手数ですがまでご連絡頂ければ幸いです。