Difference between revisions of "Jump/ja"
< Jump
Jump to navigation
Jump to search
Line 32: | Line 32: | ||
</pre> | </pre> | ||
}}{{#vardefine:notes| | }}{{#vardefine:notes| | ||
}}{{#vardefine:caveats| | }}{{#vardefine:caveats|ひとつのtargetと複数のjumpを使った場合、必ずしも全ての場合でジャンプが実行されるわけではありません。 | ||
複数に及ぶジャンプのためには、更にtargetが必要となる場合があるでしょう。 | |||
これは、長く知られたLSLのバグです。 | |||
}}{{#vardefine:helpers| | }}{{#vardefine:helpers| | ||
}}{{#vardefine:also_header|<h3>キーワード</h3> | }}{{#vardefine:also_header|<h3>キーワード</h3> |
Revision as of 08:36, 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に対応するラベルが見つからないと言うコンパイルエラーを起こすでしょう。 |
注意点
ひとつの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