«handler xxxx»
xxxx | 定義名(最初に代入される変数名と同じ) |
class | クラス識別子[r/o] |
クラス(当然handler) |
ハンドラは、利用者が定義した命令を受け取り、その処理を記述しているものである。
その設定方法については命令ハンドラ、利用者定義ハンドラ(位置渡し、ラベル渡し)を参照してほしい。
利用者定義命令を定義した時に、handlerクラスの値がハンドラ名と同じ識別子の変数に代入される。代入されているのはhandlerクラスの値であるので、当然setやcopy命令を使って別の変数に代入することもできる。
handlerクラスの値が代入された変数に、別の値を代入すると定義した利用者定義命令を参照する方法が無くなってしまうので注意。
このクラスは、利用者定義ハンドラの場合はアップルイベントの生データとして扱う。ハンドラが未定義の場合エラーとなるので、スクリプトに直接記述する機会はないと思う。例1,2で定義された値(変数xの内容)は以下のようになる。
«handler x»
handlerクラスの値を利用者定義命令として使う時は、変数の後に定義したタイプの引数を記述してやれば良い(例2)。詳しくはそれぞれの定義を参照して欲しい。
class of x
on x()
end x
set y to x
y()
on x()
beep
end x