フロー制御

ループ内のステートメントの実行フローに影響を及ぼすことができる複数のステートメントが存在します。repeatループの実行を終了させるものとしては、ここに挙げる文以外にreturnおよびpass文があります(メッセージの操作を参照)。

next repeat

next repeat文の後に続くend repeatまでの文がスキップされ、実行が現在(最も内側)のrepeatループの先頭へ直接ジャンプで戻ります。その後は引き続き次のイテレーションが実行されます。

exit repeat

現在(最も内側)のrepeatループの実行を終了します。end repeatの後に続く次の文からスクリプトの実行が進行します。

exit handler

現在のハンドラの実行を終了し、直ちに呼び出し元のハンドラに戻ります。形態としては、exit handlerName(handlerNameに現在のハンドラ名)や、終了するハンドラの種類に応じてexit onexit functionexit getPropまたはexit setPropも可能です。

exit all

現在のハンドラ、その呼び出し元のハンドラ、および呼び出しスタックのさらに上位のその他の全ハンドラの実行を終了します。

ハンドラを終了する

exit handler

振る舞い

現在のハンドラの実行を終了します。呼び出し元のハンドラでの実行は継続されます。

exit handler

exit myFancyFunction

技術トピック

構文: exit ハンドラまたは関数名

exit [handler | script | on | function | getProp | setProp]

ハンドラまたは関数名やハンドラタイプを与える場合、それが現在のハンドラの名前やタイプと合致していなければなりません。

exit all、 exit to top

振る舞い

すべてのハンドラ(現在のハンドラに加え、その呼び出し元など)の実行を停止します。

exit all

技術トピック

構文: exit all

exit to top

メッセージを渡す

passコマンド

振る舞い

現在のメッセージを、メッセージパッシングパス内の次のオブジェクトに沿って渡します(前のセクションの説明を参照)。現在のハンドラの実行は終了します。

pass message

技術トピック

構文: pass ハンドラ名または関数名

pass {message | on | function | getProp | setProp}

(汎用的な「message」という用語ではなく)ハンドラ名または関数名を与える場合、その名前は現在のハンドラ名と同じでなければなりません。onfunctiongetPropまたはsetPropを使用する場合は、現在のハンドラタイプに合致していなければなりません。

Pass ... and continue

振る舞い

pass ... and continueを使うと、passコマンドと同じようにメッセージパッシングパス内の次のオブジェクトに沿って現在のメッセージを渡しますが、そのメッセージが他所で処理された後に現在のハンドラが実行を続行できるようになります。

pass message and continue

技術トピック

構文:

pass ハンドラ名または関数名 and continue

pass message and continue

現在のハンドラは、メッセージパッシングパス内の後続の別オブジェクトでメッセージが処理された後に実行を再開します。その別のオブジェクトによって返された値は、pass ... and continueコマンドのすぐ後でthe resultにて利用可能です。

pass ... and continueコマンドの実行後に、(いずれかのpassコマンドを使って)そのメッセージを後から渡そうと試みても、実際にメッセージを渡すことはできません。メッセージが同じオブジェクトに2度送られることはありません。

Pass ... without helping

振る舞い

pass ... without helpingを使うと、メッセージパッシングパス内でヘルプ対象オブジェクトに続く次のオブジェクトに沿ってメッセージを渡します。passコマンドとの違いは、ヘルパー内で使用されたときに現れます。要するに、このヘルパーは「このメッセージではヘルプができない」と言っているのです。このヘルパーのヘルパーには、このメッセージを処理するチャンスは与えられませんが、メッセージは、ヘルプを受けているオブジェクトの後続のヘルパーや、メッセージパッシングパス内の後続の別オブジェクトに渡されます。

pass message without helping

技術トピック

構文: pass ハンドラまたは関数名 without helping

pass message without helping

このコマンドが実行されると、現在のハンドラは実行を停止します。

Pass original message to ...

振る舞い

pass original message to ...を使うと、現在のメッセージを直接別のオブジェクトに渡します。これは、現在のメッセージをメッセージパッシングパス内の次のオブジェクトに沿って渡す他のpassコマンドの形態とは異なります。

pass original message to alterEgo

技術トピック

構文: pass original message to オブジェクト {and continue}

この形のpassコマンドは、undeliveredMessageハンドラ内で使われ、オリジナル(未達)のメッセージを処理するために別のオブジェクトに渡そうとするものです。その別のオブジェクトがメッセージを処理すれば、それが終わりとなり、現在のハンドラの実行が終了します。別のオブジェクトがメッセージを処理しなければ、現在のハンドラでの実行は継続します。このようにして、undeliveredMessageハンドラは、処理を行えそうな1つまたは複数の別オブジェクトにオリジナルメッセージの送達を試みることができるのです。次の「Undelivered Messages」をご覧ください。

and continueを指定した場合、メッセージが渡された後、それが別のオブジェクトによって処理されても処理されなくても、現在のハンドラの実行が再開されます。

 

This topic was last updated on 2月 01, 2019, at 11:13:23 午前.

Eggplant icon Eggplant.io | Documentation Home | User Forums | Support | Copyright © 2019 Eggplant