【AutoHotkey】案外難しいAutoHotkey。
何気なく書いたif文でめちゃくちゃはまりました。
大抵の言語ではかっこは計算や比較の優先順位を決めるだけのもので括弧内の結果は変わりませんよね。
次のようにコードを書いた時、全て条件は成立してメッセージボックスが表示されるかと思います。
left := 100 right := 100 If left = %right% MsgBox, test1 ok If (left = right) MsgBox, test2 ok If (left = %right%) MsgBox, test3 no output If left = right MsgBox, test4 no output
ところが実行してみると1と2のケースだけメッセージボックスを表示しますが、3と4では条件不成立で表示されません。
なんでじゃあ。
目を皿のようにしてもおかしいところは見つかりません。
自分なりに考えたのはこんな理由です。
If 文が数値または変数を比較するための構文なので%による展開を受け入れることができる。
括弧でくくった場合は=演算子が使われるので%による展開が受け入れられない。
3のケースは括弧で括られているために括弧内で=演算子が利用されて %が展開されずに文字列”%right%“として扱われている。
4のケースではif 文の条件式だから、右辺には文字列と変数どちらも想定されるので、変数rightが%展開されずに文字列”rightとして扱われている。
if 文と=演算子は挙動が違うのですね 。