変数に式の計算結果を代入
Var := Expression Var op= Expression
Var | 代入先の変数名。「ArrayName%Index%」のように、変数の参照を含むと、変数の内容を展開した変数名が使われる。 |
op | 「+」「-」「*」「/」「//」「.」「|」「&」「^」「>>」「<<」のいずれかの演算子。 |
Expression | 式。式の説明参照。 |
「:=」では、Expressionを評価した結果の値がVarで指定した変数に代入される。
var:=x+y+z
「+=」や「*=」のような形式では、Varで指定した変数とExpressionをopで指定した演算子で演算した結果がVar自身に代入される。
上記の例では、xの値は11になる。
代入式全体の値は、代入後の変数の値になる。
x:=1 MsgBox,% x+=1
代入演算子が連続している場合、一番右のものから順に計算される。
下記の例では、まずcに1が足され4になり、bにcが足され6になり、aにbが足されて7になる。
a:=1,b:=2,c:=3 a+=b+=c+=1 MsgBox,%a%,%b%,%c%
代入式自体は、代入先の変数を表すものとしても扱われるため、それを更に代入式の左辺に使用したり、「&」演算子でアドレスを参照したり、関数のByRef付き引数に使うことも出来る。
下記の例では、まずxに1が加算し、更に2を掛け、func()関数に参照引数として渡し、関数内で10を加算する。
func(ByRef arg){ arg+=10 } x:=1 func((x+=1)*=2) MsgBox,% x
「+=」「-=」「*=」「/=」が一番左の演算子だった場合、それぞれEnvAdd, EnvSub, EnvMult, EnvDivコマンドの別表記とみなされるため、他の場合と異なった動作になる。
VarやExpressionが数値として正しくなかった場合、「0」であるとみなされる。(通常は、演算結果が空の文字列になる)
「+=」「-=」では、日付時刻の演算が可能になる。
「/=」では、VarとExpressionが共に整数値の場合、結果の小数点以下が切り捨てられて整数値になってしまう。(通常の「/」演算子は、小数点以下を切り捨てない)
式の説明, IF (式), SetEnv, EnvSet, EnvAdd, EnvSub, EnvMult, EnvDiv, If, 配列
Var := 3 Var := "literal string" Var := Price * (1 - Discount/100) Finished := not Done or A_Index > 100 if not Finished { FileAppend, %NewText%`n, %TargetFile% return } else ExitApp