スクリプトオブジェクトの属性は、レコードの属性と同じように扱うことができます。
詳しくは「値をレコードでまとめる」を参照して下さい。以上。
では、あまりに手抜きなので、一応サンプルをまとめておきます。
まず、属性に値を一気に代入する方法を考えます。
以下のスクリプトは単にx,y,zという変数に値を代入する結果となり、CoordinatesObjの属性に変化はありません。
script CoordinatesObj
property x : 1
property y : 2
property z : 3
end script
tell CoordinatesObj to set {x, y, z} to {4, 1, -1}
{x, y, z} of CoordinatesObj
--> {1, 2, 3}
既に定義されている属性の名称(所謂、予約語)を使うと、代入可能になりますが、使わないようにした方が無難でしょう。
script ObjX
property length : 1
property time : 2
property day : 3
end script
tell ObjX to set {length, time, day} to {4, 1, -1}
{length, time, day} of ObjX
--> {4, 1, -1}
以下レコードと一緒。
代入先にレコードの各属性がある場合は、まとめて代入する事はできませんでしたが、逆に代入の元になる方であれば、以下のように書く事で、まとめて代入する事ができます。
script CoordinatesObj
property x : 1
property y : 2
property z : 3
end script
set {x1, y1, z1} to {x, y, z} of CoordinatesObj -- tell CoordinatesObj to set {x1, y1, z1} to {x, y, z}では、動かない
{x1, y1, z1}
--> {1, 2, 3}
こんな感じで、まるっきりレコードと一緒です。
どうも、AppleScriptはレコードを拡張してスクリプトオブジェクトを定義しているようです。