フローコントロール
スクリプト内のステートメント実行の流れに影響を及ぼすいくつかのステートメントがあります。
リピートループのフローを変更する
ここに挙げたステートメントに加えて、return
および pass
ステートメントはリピートループの実行を終了します(Messagesを参照)。
次の繰り返し
next repeat
ステートメントから end repeat
までの後続のステートメントをスキップし、実行を現在の(最も内側の)リピートループの最初に直接戻します。その後、次のイテレーションで実行が続きます。
構文:
next repeat
繰り返し終了
現在の(最も内側の)リピートループの実行を終了します。スクリプトの実行は end repeat
の次のステートメントから続きます。
構文:
exit repeat
ハンドラの終了
ハンドラの終了 \
Behavior: 現在のハンドラの実行を終了します。実行は呼び出しハンドラで続きます。
構文:
exit handlerOrFunctionName
exit [handler | script | on | function | getProp | setProp]
handlerOrFunctionName またはハンドラのタイプが指定された場合、それは現在のハンドラの名前またはタイプと一致 しなければなりません。
例:
exit handler
exit myFancyFunction
Exit All, Exit to Top
Behavior: すべてのハンドラの実行を停止します(現在のハンドラとそれを呼び出したハンドラ、そしてその先のハンドラ)。
構文:
exit all
exit to [top | SenseTalk]
例:
exit all
メッセージのパス
Pass
コマンド
Behavior: 現在のメッセージをメッセージ パッシング パス内の次のオブジェクトに渡します (こちら で説明されているとおり)。これにより、現在のハンドラーの実行が終了します。
構文:
pass handlerOrFunctionName
pass {the} message
_handlerOrFunctionName_が指定された場合("message"という一般的な用語ではなく)、提供された名前は現在のハンドラの名前と同じでなければなりません。
例:
pass message
Pass ... and Continue
コマンド
Behavior: pass ... and continue
コマンドを使用して、現在のメッセージをメッセージパスの次のオブジェクトにパスします。ただし、メッセージが他の場所で処理された後でも、現在のハンドラの実行を続行します。
現在のハンドラは、メッセージがメッセージパスで後続のオブジェクトによって処理された後で実行を再開します。他のオブジェクトによって返された任意の値は、pass ... and continue
コマンド直後の the result
で利用可能です。
pass ... and continue
コマンドを実行した後、そのメッセージをパスしようとする後続の試み(pass コマンドのいずれかを使用)は、同じオブジェクトに二度メッセージが配信されることはないため、実際にはメッセージをパスすることができません。
構文:
pass handlerOrFunctionName and continue
pass {the} message and continue
例:
pass message and continue
Pass ... Without Helping
コマンド
Behavior: pass ... without helping
を使用して、メッセージをメッセージパスのヘルピーに続く次のオブジェクトにパスします。これはヘルパー内で使用されるときに pass
コマンドと異なります。本質的に、ヘルパーは"このメッセージを助けることはできません"と言っていることになります。ヘルパーのヘルパーにはメッセージを処理するチャンスが与えられませんが、メッセージは助けられているオブジェクトの後のヘルパーやメッセージパスの後の他のオブジェクトにパスされます。
このコマンドが実行されると、現在のハンドラの実行が停止します。
構文:
pass handlerOrFunctionName without helping
pass {the} message without helping
例:
pass message without helping
Pass Original Message To ...
コマンド
Behavior: 現在のメッセージを他のオブジェクトに直接渡すには、pass original message to ...
を使用します。これは、現在のメッセージをメッセージ パッシング パス内の次のオブジェクトに渡す pass
コマンドの他の形式とは異なります。
Behavior: pass original message to ...
を使用して、現在のメッセージを直接他のオブジェクトにパスします。これは pass
コマンドの他の形式と異なり、現在のメッセージをメッセージパスの次のオブジェクトにパスします。
and continue
が指定されている場合、メッセージがパスされた後、他のオブジェクトがそれを処理したかどうかに関係なく、現在のハンドラは実行を再開します。
構文:
[**構文:**md pass original message to object {and continue}
例:
pass original message to alterEgo