Difference between revisions of "NULL KEY/ja"
< NULL KEY
Jump to navigation
Jump to search
(Correct ambiguous translation) |
|||
Line 1: | Line 1: | ||
{{ | {{LSL Constant/ja | ||
|name=NULL_KEY | |name=NULL_KEY | ||
|type=string | |type=string | ||
|value="00000000-0000-0000-0000-000000000000" | |value="00000000-0000-0000-0000-000000000000" | ||
|desc= | |desc=正式には文字型の定数ですが、{{LSLG/ja|key}} (UUID) として使う以外の用途はありません。 | ||
{{LSLG/ja|key}}型として有効な形式に従っていますが、key 型にキャストして{{LSLGC|Conditional/ja|条件文}}で (単体で) 評価すると、{{LSLG/ja|FALSE}} として判定されます。 | |||
|examples= | |examples= | ||
<lsl>integer isKey(key in) { | <lsl>integer isKey(key in) { | ||
Line 24: | Line 23: | ||
}//上から順に、0,1,1,2を返します | }//上から順に、0,1,1,2を返します | ||
}</lsl> | }</lsl> | ||
|notes= | <lsl>// NULL_KEY 自身は key 型にキャストされた時だけ FALSE になります。 | ||
default { | |||
state_entry() { | |||
if (NULL_KEY) { llOwnerSay("NULL_KEY is TRUE"); }// 正しい。 | |||
else { llOwnerSay("NULL_KEY is FALSE"); }// 間違い。 | |||
if ((key) NULL_KEY) { llOwnerSay("Casted NULL_KEY is TRUE"); }// 間違い。 | |||
else { llOwnerSay("Casted NULL_KEY is FALSE"); }// 正しい。 | |||
} | |||
}</lsl> | |||
|notes=大概の状況で NULL_KEY は不要であり、空文字列 ("") で間に合います。敢えて NULL_KEY を使おうという工夫は避けられるべきです。多くのアプリケーションで key 値は NULL_KEY と比較されて有効/無効判定されますが、これは良くないやり方です。 | |||
LSL では key 値の有効/無効を簡単に調べられます。条件文に key 値をそのまま入れるだけです。 | |||
すなわち <code>if(uuid != NULL_KEY)</code> とするのでなく <code>if(uuid)</code> とします。<code>if(uuid)</code> | すなわち <code>if(uuid != NULL_KEY)</code> とするのでなく <code>if(uuid)</code> とします。<code>if(uuid)</code> はuuidが有効なkey値である、すなわちNULL_KEYでない場合のみ{{LSLG/ja|TRUE}}を返します。また、uuidの中身が""であってもFALSEを返しますので、有効かどうかを判定する方法としてはこちらのほうが優れています。(<code>if(uuid != NULL_KEY)</code>ではuuidが""のとき、TRUEを返します) | ||
|functions= | |functions= | ||
{{LSL DefineRow||{{LSLG/ja|llAvatarOnSitTarget}}|}} | {{LSL DefineRow||{{LSLG/ja|llAvatarOnSitTarget}}|}} |
Revision as of 05:17, 11 June 2009
LSL ポータル | 関数 | イベント | 型 | 演算子 | 定数 | 実行制御 | スクリプトライブラリ | カテゴリ別スクリプトライブラリ | チュートリアル |
関連記事
関数
• | llAvatarOnSitTarget | |||
• | llDetectedKey | |||
• | llGetNotecardLine | |||
• | llGetLandOwnerAt | |||
• | llGetPermissionsKey | |||
• | llGetTexture | |||
• | llListen |
イベント
• | attach |
サンプル
<lsl>integer isKey(key in) {
if(in) return 2; return (in == NULL_KEY);
}//有効なkeyならば2を、NULL_KEYならば1を、""ならば0を返します。</lsl>
<lsl>//上記ユーザー関数を使った結果のテスト default {
state_entry() { llOwnerSay((string)isKey("")); llOwnerSay((string)isKey(NULL_KEY)); llOwnerSay((string)isKey("00000000-0000-0000-0000-000000000000")); llOwnerSay((string)isKey(llGetOwner())); }//上から順に、0,1,1,2を返します
}</lsl> <lsl>// NULL_KEY 自身は key 型にキャストされた時だけ FALSE になります。 default {
state_entry() { if (NULL_KEY) { llOwnerSay("NULL_KEY is TRUE"); }// 正しい。 else { llOwnerSay("NULL_KEY is FALSE"); }// 間違い。 if ((key) NULL_KEY) { llOwnerSay("Casted NULL_KEY is TRUE"); }// 間違い。 else { llOwnerSay("Casted NULL_KEY is FALSE"); }// 正しい。 }
}</lsl>
注意事項
大概の状況で NULL_KEY は不要であり、空文字列 ("") で間に合います。敢えて NULL_KEY を使おうという工夫は避けられるべきです。多くのアプリケーションで key 値は NULL_KEY と比較されて有効/無効判定されますが、これは良くないやり方です。
LSL では key 値の有効/無効を簡単に調べられます。条件文に key 値をそのまま入れるだけです。
すなわち if(uuid != NULL_KEY)
とするのでなく if(uuid)
とします。if(uuid)
はuuidが有効なkey値である、すなわちNULL_KEYでない場合のみTRUEを返します。また、uuidの中身が""であってもFALSEを返しますので、有効かどうかを判定する方法としてはこちらのほうが優れています。(if(uuid != NULL_KEY)
ではuuidが""のとき、TRUEを返します)