OMif : If, Then, Else
「もしAが真なら、そしたらBをする。偽ならばCをする」というフローをOMで作るにはOMifを使う。
Functions->Kernel->Control->OMIFを選択するか、「Omif」と打ち込んで呼び出す。
Functions->Kernel->Control->OMIFを選択するか、「Omif」と打ち込んで呼び出す。
#ref error :画像を取得できませんでした。しばらく時間を置いてから再度お試しください。
インプット
#ref error :画像を取得できませんでした。しばらく時間を置いてから再度お試しください。
引数[0] test IF:条件
引数[1] action THEN:条件が真の場合に実行するもの
引数[2] else ELSE:条件が偽の場合に実行するもの
引数[1] action THEN:条件が真の場合に実行するもの
引数[2] else ELSE:条件が偽の場合に実行するもの
ELSEは最初はついてないがボックス選択してShift+>で出せる。
動作
例1:IF、THEN
#ref error :画像を取得できませんでした。しばらく時間を置いてから再度お試しください。
今OmifのIFには、om-random関数とOM=比較述語で「1~3からランダムに選んだ数が、2と等しい場合はtを返す」というようなものが入力されている。
OM=がtを返してきたら(つまり条件が真だったら)THENが実行されblueという文字列を返す。
OM=がnilを返してきたら(つまり条件が偽だったら)何も実行されないのでnilを返す。
例2:IF、THEN、ELSE
#ref error :画像を取得できませんでした。しばらく時間を置いてから再度お試しください。
OMifのIFは、「1~3からランダムに選んだ数が、1より大きくかつ3より小さい場合はtを返す」というような入力。
(Omand関数(∧)は「かつ」の意味で、両方がtだったらtを返す。)
Omandがtを返してきたら(つまり条件が真だったら)THENが実行されblueという文字列を返す。
Omandがnilを返してきたら(つまり条件が偽だったら)ELSEが実行され選ばれた数を返す。
(この項目と関係ないけどom-random関数がワンスモードになってることに注目。これが通常モードだとOM<に呼ばれたときとOM>に呼ばれたときとOMifに呼ばれたときで別々の値を返すのでおかしなことになる。)