Switchノードを使う(その1)
今回はSwitchノードを使ってみます。JavaScriptのswitch文に相当します。機能的にはシンプルな気はしますが、サンプルが多いのが意外でした。今回も少々時間はかかりますが、一個ずつ見ていきたいと思います。
入力値による出力ポートの振り分け
最初のサンプルは「flows > node-red > function > switch > 01 - Select output port」です。
ノードのプロパティを見るとまんまswitch文のcase句が実装されているイメージです。合致した条件に応じて出力ポート1〜3に振り分けられます。条件を増やしていくと出力ポートが増えるようです。
全ルールのチェック
次のサンプルは「flows > node-red > function > switch > 02 - Check all rules」です。switchノードには2つの出力ポートがあります。
プロパティを確認すると、条件分岐2つの下に「全ての条件を適用」と設定されています。
各フローを実行すると、以下のようなログが出力されます。
- -10選択時
- "<10"
- 0選択時
- "<10"
- ">-10"
- 10選択時
- ">-10"
つまり、ある条件に合致してもそこで判定処理は終わらず、他の条件にも合致するか確認するということですね。JavaScriptのswitch文で言うところのcase句の中にbreakがない状態みたいなイメージでしょうか。
最初に合致した条件で判定処理を終える
一つ前のサンプルと比較すると挙動がわかりやすいのが次のサンプル「flows > node-red > function > switch > 03 - Stop after first match」です。違いはSwitchノードプロパティの条件適用の設定のみで、こちらは「最初に合致した条件で終了」となっています。
- -10選択時
- "<10"
- 0選択時
- "<10"
- 10選択時
- ">-10"
つまり、先ほどと違ってある条件に合致したらそこで判定処理は終わるということですね。JavaScriptのswitch文で言うところのcase句の中にbreakを入れた状態に相当するのだと思います。
とりあえずまとめ
まだまだサンプルはたくさんあるので続きます。
コメント
コメントを投稿