AutoHotkeyで配列などのオブジェクトを普通に代入すると、参照渡しとなり、実体はコピーされない。
実体をコピーするには、Clone()を使う。
下記のコードをコピペして、Ctrl+Shift+aとCtrl+Shift+bを押してみると、挙動の違いが確認できる。
^+a:: a:=[1,2,3] b:=a ;参照渡し b[2]:=5 ;a[2]が書き換えられる。 ToolTip,% a[2] b[2] ;55 return ^+b:: a:=[1,2,3] b:=a.Clone() ;値渡し b[2]:=5 ToolTip,% a[2] b[2] ;25 return
Objectを普通に代入すると、ポインタ渡しになってるのは注意がいりそう。
コメント