#5 Scalaで学ぶ条件分岐の基本

Scalaの条件分岐は、Kotlinと同じく「値を返すif」という特徴を持っています。この記事では、Scalaにおける条件分岐の基本と、強力なパターンマッチングを解説します。

if文の基本

val age = 20
if (age >= 18) {
    println("成人です")
} else {
    println("未成年です")
}

ifが値を返せるという特徴

Scalaのifは、式として値を返すことができます。

val message = if (age >= 18) "成人です" else "未成年です"

Scalaには三項演算子が存在せず、この「値を返すif」がその役割を兼ねています。

matchという強力な書き方

Scalaにはmatchという、Javaのswitchをさらに発展させたような書き方があります。

val result = score match {
    case s if s >= 90 => "優"
    case s if s >= 70 => "良"
    case _ => "可"
}

単純な値の比較だけでなく、条件式やパターンを組み合わせた柔軟な分岐を書けるのが特徴です。

複数の値をまとめて判定する

caseにはカンマ区切りで複数の値をまとめて指定することもできます。

val result = day match {
    case "土" | "日" => "休日です"
    case _ => "平日です"
}

以前の記事で触れたcase classの値を分解して取り出すパターンマッチングも、このmatchの応用です。

型によるパターンマッチング

matchは、値の型に応じて分岐させることもできます。

def describe(x: Any): String = x match {
    case n: Int => s"整数です: $n"
    case s: String => s"文字列です: $s"
    case _ => "不明な型です"
}

受け取った値がどんな型かによって処理を分けたい場面で、if文による型チェックより簡潔に書けます。

Scalaならではの注意点

matchは非常に強力な機能ですが、その分書き方の幅も広く、最初はすべてを覚えようとせず、まずはcase _(それ以外の場合)を使ったシンプルな形から慣れていくのがおすすめです。case _を書き忘れて、想定していないパターンが渡された場合、実行時に例外(MatchError)が発生することがあるため、抜け漏れがないようcase _を最後に用意しておく習慣をつけましょう。

まとめ

Scalaの条件分岐はifを値として使えることに加え、matchという強力な分岐の仕組みを持っています。case _の書き忘れに注意しつつ、少しずつ書き方の幅を広げていきましょう。


本ページはプロモーションを含みます。

参考書籍(PR)

Scalaをもっと学びたい方には「実践Scala入門」がおすすめです。


PR

コードを書かずに自動化したい方へ

「学んだけど自分の作業に組み込む時間がない」という方向けに、ダブルクリックで動く Windows専用の自動化ツールをオーダーメイドで作成しています。気になる方は こちらをご覧ください。

コメント

このブログの人気の投稿

#25 Rustで学ぶAI API(ChatGPT等)の呼び出し方の基本

#8 C++で学ぶ文字列操作の基本

#16 TypeScriptで学ぶ辞書型(マップ)の基本