変数の値を交換する

普通の値の交換

 変数に含まれる値を交換する場合は、一時変数を用意して、次のようにするのが一般的なやり方です。

-- 変数の定義
set a to 1
set b to 2
-- ここから交換の処理
set tmp to b
set b to a
set a to tmp

{a, b}
--> {2, 1}

リストを利用した交換

 AppleScriptではリストを使うことによって、一気に代入することができます。
 そのことについて詳しくは「値をリストでまとめる」を参照して下さい。
 また、AppleScriptは右辺の内容を変数とは別のメモリに一時的に保存しておいて、代入を行います。この性質を利用すれば、次のように一気に交換することが出来ます。

-- ついでに定義も一気に行います
set {a, b} to {1, 2}
-- ここが交換の処理、何と一行のみ
set {a, b} to {b, a}

{a, b}
--> {2, 1}

 もちろん3つ以上の変数でも交換は可能です。

set {a, b} to {1, 2, 3}
set {a, b, c} to {c, a, b}

{a, b, c}
--> {3, 1, 2}

 あまり大きなものをまとめて交換すると、メモリ不足が心配されるので、大きなデータを交換する場合は、3つ以上まとめてやるのは控えた方がいいかもしれません。
 参照の交換をしているだけのような気もするので、意外に安全かもしれませんが。
 変数の内容の交換は頻繁に起きる処理ですから、簡単な割に有効なTipだと思います。


2002-01-06