Conditional:複数条件
Conditionalは複数の条件を左から1つずつ、1つ目の条件が偽なら2つ目、2つ目の条件も偽なら3つ目・・・とチェックしていって偽でない値をもらったらそれを返すようなもの。
インプットとアウトプット
動作
ConditionalとOmif
ConditionalはOmifと一緒に使うことが多い。
例1
#ref error :画像を取得できませんでした。しばらく時間を置いてから再度お試しください。
- Om+関数は4を返す。
- Om=比較述語は4=5なのか調べる。これは偽なのでnilを返す。
- 左端のOmifは、Om=がnil(偽)だったのでTHENの1984を返さず、Conditionalに対してnilを返す。
- nilだったのでConditionalは2番目のOmifのチェックに移る。2番目からもnilなので次は3番目、3番目もnilなので4番目、4番目もnilなので5番目とチェックし続ける。
- 5番目の入力からはgeorgeが返ってくる。これは偽ではないのでここでストップ、Conditionalはこのgeorgeを返す。
例2
#ref error :画像を取得できませんでした。しばらく時間を置いてから再度お試しください。
- Om-random関数は1から10のうち1つ数を選ぶ。ワンスモードにしてどこから呼ばれても同じ値を返すようにしている。
- Conditionalは第1条件をチェックする。2より大きくかつ6より小さい数、つまり3・4・5ならOmif関数はConditionalにAを返し、これはnilではないのでConditionalはユーザーにAを返して終了。
- もし選ばれた数が3・4・5でなくてOmifがnilを返してきたら、Conditionalは第2条件をチェックしにいく。ここの条件は、選ばれた数が8ならBを返す、という意味。もし8だったらOmif関数はConditionalにBを返し、これはnilではないのでConditionalはユーザーにBを返して終了。
- もし選ばれた数が8でもなくて、Omifがnilを返してきたら、Conditionalは第3条件をチェックしにいく。
- 選ばれた数が3・4・5でなくて8でもない(つまり1・2・6・7・9・10)ならば、Conditonalは選ばれた数をそのままもらう。これはnilではないのでそのまま出力。
実はConditionalは次にやるomOR関数と同じもの。書き換え可能。