Jump/ja: Difference between revisions
< Jump
No edit summary |
No edit summary |
||
| Line 2: | Line 2: | ||
{{LSL Header/ja| | {{LSL Header/ja| | ||
}}{{#vardefine:name|jump | }}{{#vardefine:name|jump | ||
}}{{#vardefine:p_jump_target_desc| | }}{{#vardefine:p_jump_target_desc|階層ツリーにおいて、jumpを含む、同じまたは上位のスコープ区間内に存在するラベル名。 | ||
}}{{#vardefine:p_label_target_desc| | }}{{#vardefine:p_label_target_desc|ラベルは、ラベルと同じか、ラベルが存在するよりも内側のスコープにjumpが存在する場合のみ、ターゲットとなることが出来ます。 | ||
言い換えれば、ターゲットは必ずjumpに対して階層ツリーの上位(外側)に存在しなくてはならず、if文の外側から内側に向かってジャンプは出来ません。つまり、異なる関数間、異なる(離れた)スコープ間、異なるステート間でジャンプする事も出来ません。これらのようなコードを書いた場合、単純にjumpに対応するラベルが見つからないと言うコンパイルエラーを起こすでしょう。 | |||
}}{{#vardefine:header_title|jump {{LSL Param|jump_target|target}}; | }}{{#vardefine:header_title|jump {{LSL Param|jump_target|target}}; | ||
Revision as of 09:53, 10 April 2011
| LSL ポータル | 関数 | イベント | 型 | 演算子 | 定数 | 実行制御 | スクリプトライブラリ | カテゴリ別スクリプトライブラリ | チュートリアル |
- The correct title of this article is jump/ja. The initial letter is shown capitalized due to technical restrictions.
jump target;
jump target;| • label | target | – | 階層ツリーにおいて、jumpを含む、同じまたは上位のスコープ区間内に存在するラベル名。 |
@target;
| • label | target | – | ラベルは、ラベルと同じか、ラベルが存在するよりも内側のスコープにjumpが存在する場合のみ、ターゲットとなることが出来ます。
言い換えれば、ターゲットは必ずjumpに対して階層ツリーの上位(外側)に存在しなくてはならず、if文の外側から内側に向かってジャンプは出来ません。つまり、異なる関数間、異なる(離れた)スコープ間、異なるステート間でジャンプする事も出来ません。これらのようなコードを書いた場合、単純にjumpに対応するラベルが見つからないと言うコンパイルエラーを起こすでしょう。 |
注意点
ひとつのtargetと複数のjumpを使った場合、必ずしも全ての場合でジャンプが実行されるわけではありません。 複数のジャンプのためには、更にtargetが必要となる場合があるでしょう。 これは、長く知られたLSLのバグです。
サンプル
integer a = 5;
jump over;
@in;
a = 6;
@over;
llOwnerSay((string)a);
if(a < 6)
jump in;
//script will say 5 and then 6