Scalaの条件式
1. 概要
if-else 構文は、プログラミング言語で最も基本的な条件付き構文の1つです。 条件の値に基づいてコードを実行できます。 このチュートリアルでは、Scalaの条件式について説明します。
2. if式
Scalaのif式の構文は、JavaやC++などの他の命令型言語に似ています。
if (<condition expression>) {
<expression>
} else {
<expression>
}
ここでの条件式は、booleanに評価される式を示します。 boolean条件がtrueと評価された場合、最初の式が実行されます。 それ以外の場合は、2番目の式が実行されます。
if式のelse部分はオプションです。 else式がないことは完全に有効です。
基本的なif式を見てみましょう。
def max(a: Int, b: Int): Unit = {
var max: Int = a
if (b > a) {
max = b
}
printf("Maximum is %d", max)
}
ここでは、指定された2つの入力の最大値を出力するfunction maxを定義します。 まず、maxをaの値で初期化します。 次に、bがaより大きいかどうかを確認し、大きい場合は、maxにbの値を割り当てます。 最後に、maxの値を使用して最大値を出力します。
if式とelse式を使用する例を見てみましょう。
if (10 % 2 == 0) {
printf("Number is even")
} else {
printf("Number is odd")
}
10は2で割り切れるので、コードは次のように出力します。
Number is even
式にステートメントが1つしかない場合は、中括弧をスキップできます。 これらは、式に複数のステートメントがある場合にのみ必要です。 ただし、 Scalaスタイルガイドでは、中括弧を使用してコードを読みやすくすることを推奨しています。
2.1. ネストされたif式
if の各式は、 if-else 式とさらにネストして、複数のif-elseブロックを作成できます。 ネストされたif式を見てみましょう。
val number = 10
if (number == 0) {
printf("Number is zero")
} else if (number > 100) {
printf("Number is greater than 100")
} else {
printf("Number is %d", number)
}
numberの値は10です。 したがって、最初の2つのif条件はfalseと評価され、最後のelse式が実行されます。
Number is 10
2.2. 戻り値とタイプ
Scalaのifは、1つの重要な点で他の言語とは異なります。
Scalaでは、すべてのステートメントは値を返す式です。 最後のステートメントの値によって、式の値が決まります。 if 式も例外ではなく、は常に値を返します。
したがって、if式の結果を値に割り当てることができます。 以前のmax関数は次のように記述できます。
def max(a: Int, b: Int): Int = {
if (b > a) {
b
} else {
a
}
}
ここでは、 if 式の値を直接返します。これにより、aとbの最大値が返されます。
if式のreturn型は、2つの分岐式の最も近いスーパータイプです。 上記の例の戻りタイプはIntです。これは、両方のブランチがIntを返すためです。
else式のないif式も値を返します。 else 式がない場合、戻りタイプはAny。です。
ScalaREPLで次のことを簡単に確認できます。
scala> val result = if (false) "failed"
result: Any = ()
3. 慣用的な条件付き初期化
if 式を使用することは、Scalaの変数を条件付きで初期化する慣用的な方法です。 コードの記述が少なくなるだけでなく、varの代わりにvalを使用します。
val を使用すると、可変性を回避し、コードの可読性を向上させることができます。 これは、初期化されると値が変更されないことをユーザーに通知します。
val max: Int = if (10 > 100) {
10
} else {
100
}
ここで、 max は、10が100以下であるため、値100で初期化されます。
Javaとは異なり、 Scalaには、簡潔なif-else式を記述するための三項演算子がありません。
Scalaのif式は常に値を返すため、三項演算子を持つことは冗長になります。 これは、より少ないリソースでより多くのことを行うScalaの方法です。
4. 結論
この記事では、Scalaのif式とその構文について説明しました。 if 式は常に値を返すことを学び、それを使用して変数を条件付きで初期化する方法を学びました。 いつものように、すべてのコード例はGitHubでから入手できます。