ActionScript1.0のif文の展開
知っている人には有名な話(自分用メモ)。
ActionScript1.0(Flash Lite 1.1)でif文を書くとき、&&や||をつかうと、非常にいけてないバイトコードに展開される。
例えば A && Bとした場合、「Aが真じゃないとBは評価さえされない」というのを実現したかったんだと思うんだが、もう少しなんとかして欲しい…
ActionScript | バイトコード |
---|---|
if(A) { | push A |
if(A && B) { | push A |
if(A && B && C) { | push A |
if(A||B) { | push A |
if(A || B || C) { | push A |
ちなみに、上記では条件式を簡単にAと書いているが、もしvar1==var2みたいな文だったら、Aの「すべて」の場所に
push "var1"
getVariable
push "var2"
getVariable
equals
なんてコードが展開されてしまう。