Difference between revisions of "Jump/ja"

From Second Life Wiki
Jump to navigation Jump to search
(2 intermediate revisions by the same user not shown)
Line 2: Line 2:
{{LSL Header/ja|
{{LSL Header/ja|
}}{{#vardefine:name|jump
}}{{#vardefine:name|jump
}}{{#vardefine:p_jump_target_desc|ラベルは階層ツリーでjumpを含むスコープ区間になければなりません。
}}{{#vardefine:p_jump_target_desc|階層ツリーにおいて、jumpを含む、同じまたは上位のスコープ区間内に存在するラベル名。
}}{{#vardefine:p_label_target_desc|ジャンプのターゲットになるべきラベルは、jumpがラベルと同じスコープか、ラベルが存在するよりも内側のスコープに存在する場合のみ、ターゲットとなることが出来ます。
}}{{#vardefine:p_label_target_desc|ラベルは、ラベルと同じか、ラベルが存在するよりも内側のスコープにjumpが存在する場合のみ、ターゲットとなることが出来ます。
言い換えれば、異なる関数間、異なる(離れた)スコープ間、異なるステート間でジャンプする事は出来ません。そのようなコードを書いた場合、単純にjumpに対応するラベルが見つからないと言うコンパイルエラーを起こすでしょう。
言い換えれば、ターゲットは必ずjumpに対して階層ツリーの上位(外側)に存在しなくてはならず、if文の外側から内側に向かってジャンプは出来ません。つまり、異なる関数間、異なる(離れた)スコープ間、異なるステート間でジャンプする事も出来ません。これらのようなコードを書いた場合、単純にjumpに対応するラベルが見つからないと言うコンパイルエラーを起こすでしょう。


}}{{#vardefine:header_title|jump {{LSL Param|jump_target|target}};
}}{{#vardefine:header_title|jump {{LSL Param|jump_target|target}};
Line 32: Line 32:
</pre>
</pre>
}}{{#vardefine:notes|
}}{{#vardefine:notes|
}}{{#vardefine:caveats|targetは、全てのジャンプは行いません。
}}{{#vardefine:caveats|ひとつのtargetと複数のjumpを使った場合、必ずしも全ての場合でジャンプが実行されるわけではありません。
複数のジャンプのためには、更にtargetが必要となる場合があるでしょう。
これは、長く知られたLSLのバグです。


複数に及ぶジャンプのためには、更にtargetを使う必要があるでしょう。
''技術的な限界、見落とし、バグの場合、常に無いものとして扱われます。''
}}{{#vardefine:helpers|
}}{{#vardefine:helpers|
}}{{#vardefine:also_header|<h3>キーワード</h3>
}}{{#vardefine:also_header|<h3>キーワード</h3>

Revision as of 09:53, 10 April 2011

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

参考情報

キーワード

•  return
•  state