inazuma code :条件分岐
if
式 は、条件に応じて異なるブロックを評価し、その結果を値として返します。
inazuma code の if
は「文」ではなく「式」なので、if
の評価結果をそのまま変数に代入したり、他の式に組み込めます。
基本構文
let x = if (条件) {
// 条件が真のときの処理
値1;
} else {
// 条件が偽のときの処理
値2;
};
- 条件には任意の式を指定できます。
- ブロック
{ ... }
内で 最後に評価された式の結果 が返ります。 - どちらのブロックも最後にセミコロンは不要です。(書いても可)
複数の条件を順番に評価する場合は、elseif
を使います。
let x = if (n > 0) {
1;
} elseif (n < 0) {
-1;
} else {
0;
};
ネスト
if
式は入れ子にできます。
let result = if (n > 0) {
if (n > 5) {
"large";
} elseif (n < 5) {
"small";
} else {
"exactly 5";
}
} elseif (n < 0) {
"negative";
} else {
"zero";
};
値として利用
if
式は値を返すため、変数に代入したり、他の式の一部に組み込めます。
let message = "Result: " + (if (flag) { "OK" } else { "NG" });
ブロックが空の場合
- 空ブロック
{ }
の評価結果はnull
です。 else
を省略して条件に一致しなければnull
が返ります。
let x = if (true) { }; // x = null
メソッドチェインとの組み合わせ
if
式の評価結果に対して、そのままメソッドチェインが可能です。
let result = if (input > 0) {
[1, 2];
} else {
[3, 4];
}->filter(x => x->is_even());
// input > 0 の場合 [2]、それ以外は [4]
まとめ
- 式 として評価されます。
- 条件が一致したブロック内で 最後に評価された式の結果 が返り値です。
elseif
/else
に対応しています。- ブロックが空または条件不一致で
else
がない場合はnull
を返します。 - ネストに対応しています。
- 評価結果に対して、そのままメソッドチェインが可能です。