メインコンテンツまでスキップ

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 を返します。
  • ネストに対応しています。
  • 評価結果に対して、そのままメソッドチェインが可能です。