#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専用の自動化ツールをオーダーメイドで作成しています。気になる方は こちらをご覧ください。
コメント
コメントを投稿