NULL KEY/ja
From Second Life Wiki
関連項目
関数
| • | llAvatarOnSitTarget | |||
| • | llDetectedKey | |||
| • | llGetNotecardLine | |||
| • | llGetLandOwnerAt | |||
| • | llGetPermissionsKey | |||
| • | llGetTexture | |||
| • | llListen |
イベント
| • | attach |
例
integer isKey(key in) { if(in) return 2; return (in == NULL_KEY); }//有効なkeyならば2を、NULL_KEYならば1を、""ならば0を返します。
//上記ユーザー関数を使った結果のテスト 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を返します }
// 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"); }// 正しい。 } }
メモ
大概の状況で 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を返します)

