コンテナへの参照
ほとんどの場合、スクリプト内のコンテナは、スクリプト内で直接変数名(または他のコンテナ識別子)を指定することで、コンテナに直接値を格納したり、コンテナから値を読み出したりすることで使用されます。しかし、時々、コンテナへの参照を格納することが非常に有用になることがあります。これを使って、後でそのコンテナの値にアクセスすることができます。参照はコンテナの値ではなく、コンテナのアイデンティティを保持してお り、参照にアクセスすると、それが参照しているコンテナの内容を読み出したり書き込んだりします。
参照の特性
参照には、それらを使って作業を行う際に認識しておきたいいくつかの特性があります。参照がどのように動作するかを理解するための第一歩として、次の単純な変数への参照を使用した例を考えてみてください:
put 32 into age -- Ageは現在、値32を含む変数です
put a reference to age into yearsOnThePlanet -- 参照を格納する
put yearsOnThePlanet -- 32 (yearsOnThePlanetはageの値を参照します)
add 1 to age -- Ageは現在33です
put yearsOnThePlanet -- 33を出力する (参照は動的です)
上記の最初の行では、単純な値(32
)が普通の変数(age
)に割り当てられます。次の行では、変数age
への参照を変数yearsOnThePlanet
に格納します。これにより、yearsOnThePlanet
変数の値への任意のアクセスは、実際にはスクリプトの次の行で示されているように、age
変数の値にアクセスすることになります。スクリプトの最後の2行では、age
変数の値を増やし、yearsOnThePlanet
変数が更新された値にアクセスすることを示しています。
参照は強く結びつく
参照によって確立される接続は"スティッキー"(上記の例ではyearsOnThePlanet
はage
にしっかりと接着されています)なので、割り当ては他の方向でも動作します - どちらの値を変更しても、両方の値が変わります:
put 29 into yearsOnThePlanet
put age -- 29を出力します
参照構文
参照は、container
、reference
、reference to
、または refer to
という単語を使用するか、コンテナの前に短縮記号 @
を使用して行うことができます。または、コンテナの後に by reference
または as reference
を使用します。次のすべては同等です。...
put container thing into watcher
set watcher to be a reference to thing
put @thing into watcher
set watcher to reference thing
set watcher to refer to thing
set watcher to thing by reference
set watcher to thing as a reference
構文:
コンテナ aContainer
{a} reference {to} aContainer
refer to aContainer
@ aContainer
aContainer [by | as {a}] reference