制作日記

こういうの作った方が、逃げにくいじゃない

オキ氏のテキスト読んでて

気になったとこでも、書いてみる

テスト2 同一トリガー内での優先度
[state ]
type=null
trigger1=1||var(0):=var(1):=var(2):=0
trigger1=var(2):=!var(0)+30||var(1):=!var(2)+20||var(0):=!var(1)+10
上記を例にした場合
var(0)=10,var(1)=20,var(2)=31となった
えっと…var(2)を読み込む時にはvar(0)は0だから左から順番に読み込んでるって事になるのかな?
試しにvar(0)代入の部分を:=!!var(2)+10にすると11を返したので
trigger1= A || B || C とした場合A→B→Cてな感じに読み込むっぽい
また、||が&&でも同じ結果になった
そしてテスト1にもあるvar(X):=var(Y):=var(Z):=Aとした場合は
var(Z)の代入から行われvar(X),var(Y)はvar(Z)と同値になる
多分…var(X):=a,b=(var(Y):=b),c=(var(Z):=A)て感じで
括弧が省略されてる…んだと思う var(X):=(var(Y):=(var(Z):=A))みたいに
だから代入の優先度はこの場合var(Z)からってなってるのかなー…

そこらへんは演算子の優先度と結合規則を調べると、幸せになれるのよ
ちゃんと調べてないけど、Cとほぼ同じでしょ、多分
ただし、注意すべきは
trigger1= A || B || C とした場合A→B→Cてな感じに読み込むっぽい
ここだと思うのよね
Cだ真偽が確定した瞬間読まなくなるんだけど、MUGENは馬鹿正直に全部読みやがる


代入のテスト3 ifelse
[state ]
type=null
trigger1=ifelse((var(1):=!var(0)),var(0):=1,var(0):=0)
上記のようにifelse内で代入をしてみたが…
この結果は常にvar(0)=0,var(1)=1となった
ifelse(A,B,C)としてAが真を返せばBを読み
Cが無視されるのならばAの真偽は交互になる筈なんだけど…
0にリセットせずとも結果は固定 どうもCの部分まで一応は見ているっぽいね…
試しに
trigger1=ifelse(0,var(0):=1,var(2):=16&&var(1):=88)
とした結果 全ての変数にそれぞれ指定値が代入された
これはifelse(A,B,C)のAが真であろうと偽であろうと同じ
ifelse内で代入を行う人は注意!


ここもそれが微妙にかかわってるのかもね
で、R.C.にはcondっていうトリガーがあってだな
これは真偽判定後、片方だけ読み込んでくれるという優れもの

コメントの投稿

非公開コメント

プロフィール

Author:drab
霊夢改変キャラ
「12 3 ! {V} [_]」
公開中
L霊夢でもl_reimuでも好きなように読んでください

最新記事
最新コメント
月別アーカイブ
カテゴリ
検索フォーム
RSSリンクの表示
リンク