Kotlinのif文について

採用はこちら

Kotlinのifは、条件によって処理を分岐するための基本的な制御構文です。

JavaやC系言語と似た書き方ができますが、Kotlinでは ifが「値を返す式(expression)」として利用できるという重要な特徴があります。

そのためKotlinでは次のような用途でifを使えます。

  • 条件による処理分岐
  • 値を返す条件式
  • 変数への代入
  • 関数の戻り値として使用

この記事では、Kotlinのif構文を基礎から実践レベルまで解説します。

目次

基本的なif文

最も基本的な構文は次の通りです。

if (条件式) {
    実行する処理
}

条件式が true の場合のみブロック内の処理が実行されます。

val number = 10

if (number > 5) {
    println("5より大きいです")
}

処理の流れは次の通りです。

  1. number > 5 が評価される
  2. 条件が true の場合
  3. {} 内の処理が実行される

条件が false の場合は何も実行されません。

if – else 文

条件が満たされない場合の処理を指定するには else を使用します。

if (条件) {
    処理A
} else {
    処理B
}

val score = 60

if (score >= 70) {
    println("合格")
} else {
    println("不合格")
}

この例では score が70未満なので、結果は次のようになります。

不合格

else if を使った複数条件

複数の条件分岐を行う場合は else if を使用します。

if (条件1) {
    処理1
} else if (条件2) {
    処理2
} else {
    処理3
}

val score = 85

if (score >= 90) {
    println("Sランク")
} else if (score >= 70) {
    println("Aランク")
} else if (score >= 50) {
    println("Bランク")
} else {
    println("Cランク")
}

条件は上から順に評価され、最初に一致したブロックが実行されます。

Kotlinではifを「式」として使える

Kotlinの大きな特徴として、if値を返す式として使えるという点があります。

つまり、条件によって値を返すことができます。

val max = if (a > b) a else b

このコードは、ab の大きい方を max に代入しています。

Javaでは通常次のように書きます。

int max;

if (a > b) {
    max = a;
} else {
    max = b;
}

Kotlinでは if を式として扱えるため、より簡潔に書くことができます。

ブロックを持つif式

if の各分岐に複数の処理を書くこともできます。

その場合、ブロックの最後の式が戻り値になります。

val result = if (score >= 60) {
    println("合格です")
    "Pass"
} else {
    println("不合格です")
    "Fail"
}

この場合

result = "Pass"

が代入されます。

なお、if値として使う場合は通常elseが必要になります。

すべての分岐で値が決まる必要があるためです。

波かっこを省略できる場合

処理が単一の式の場合、波かっこ {} を省略できます。

if (age >= 20) println("成人です")

ただし実務では、可読性のために {} を使うことも多く、特に処理が増える可能性がある場合はブロックを書く方が安全です。

論理演算子との組み合わせ

複数条件を組み合わせる場合は論理演算子を使用します。

演算子意味
&&AND
`
!NOT

val age = 25
val hasLicense = true

if (age >= 18 && hasLicense) {
    println("運転できます")
}

Kotlinでよく使われるifの実践パターン

ログイン状態の判定

val message = if (isLogin) "ログイン中" else "未ログイン"

このように短い条件分岐は1行で書くことがよくあります。

複数条件の判定

val result = if (score >= 80) {
    "優"
} else if (score >= 60) {
    "良"
} else {
    "不可"
}

ガード節(早期リターン)

実務では次のような書き方もよく使われます。

if (user == null) return

このように、条件を満たさない場合は処理を早期終了させる書き方をガード節(guard clause)と呼びます。

コードのネストを減らすため、実務ではよく使われます。

nullチェックとスマートキャスト

Kotlinでは null チェック後に変数が non-nullとして扱われる仕組みがあります。

これを スマートキャスト と呼びます。

val name: String? = "Taro"

if (name != null) {
    println(name.length)
}

このブロック内では nameString として扱われるため、name.length を安全に呼び出せます。

whenとの使い分け

Kotlinには when という分岐構文もあります。

if は次のような場合に向いています。

  • 範囲判定
  • 論理条件
  • true / false 判定

一方 when は次のような場合に向いています。

  • 値の一致判定
  • 多数の分岐
  • 列挙型や定数分岐

ifの場合

if (x == 1) {
    println("one")
} else if (x == 2) {
    println("two")
}

whenの場合

when (x) {
    1 -> println("one")
    2 -> println("two")
}

分岐が多くなる場合は when のほうが読みやすくなることが多いです。

まとめ

Kotlinのifは、他の言語の条件分岐と似ていますが、式として値を返せるという特徴があります。

主なポイントを整理すると次の通りです。

  • 基本構文は if (条件) { }
  • elseelse if で複数条件を処理できる
  • if は値を返す式として利用できる
  • 変数代入や return に直接使える
  • nullチェックではスマートキャストが働く
  • 条件分岐が多い場合は when を使うと読みやすい

以上、Kotlinのif文についてでした。

最後までお読みいただき、ありがとうございました。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次