ifelseトリガーといまひとつ違いがわかりづらいこのcondトリガー。ifelseとの違いは「短絡評価」を行うこと。でも使う場面がほとんどないといういまいちなトリガーでしたが一個思いついたので書いておく。ぶっちゃけblogのコピー。
つまりはこの組み合わせを一行で書くことに使えるということに気が付いた。この二つを同じ行にかけない最大の理由は、&&のオペランドが同時に評価されること。つまりNumHelperを評価したと同時にHelperリダイレクトも行われちゃう。
だもんで、MUGENは「そんなヘルパーねーよ」といって警告を出しまくる。
condトリガーなら?
condトリガーは
cond(条件式 A, 真の場合の式 B, 偽の場合の式 C)
という形をしている。ifelseと同じだが式(A)の評価を先に行い、真の場合 (0以外の場合) 式(B)を実行し、偽の場合 (0の場合) 式 (C)を実行する。ifelseは式(A)の値にかかわらずとりあえずBもCも評価しといて、最後に式(A)の値からどっちを使うか決めているっぽい。
で、このcondトリガーで式(B)のみに評価式を入れ、式(C)に「0」を書くと「&&」と同じand処理になる。また式(B)に1を書き、式(C)に評価式を入れると「||」と同じor処理になる (はず)。よって
trigger1 = NumHelper(9999)
trigger1 = Helper(9999),var(58) != 0
が
trigger1 = cond(NumHelper(9999), (Helper(9999),var(58) != 0), 0)
に変形できる。ホラ、一行になった。
そのうち考える。