Difference between revisions of "NULL KEY/ja"

From Second Life Wiki
Jump to: navigation, search
Line 28: Line 28:
 
LSLではkeyが有効であるかを簡単に調べられます。条件文にkeyをそのまま入れるだけです。
 
LSLではkeyが有効であるかを簡単に調べられます。条件文にkeyをそのまま入れるだけです。
  
すなわち <code>if(uuid != NULL_KEY)</code> とするのでなく <code>if(uuid)</code> とします。<code>if(uuid)</code> はkeyが有効である、すなわちNULL_KEYでない場合のみ{{LSLG/ja|TRUE}}を返します。
+
すなわち <code>if(uuid != NULL_KEY)</code> とするのでなく <code>if(uuid)</code> とします。<code>if(uuid)</code> はkeyが有効である、すなわちNULL_KEYでない場合のみ{{LSLG/ja|TRUE}}を返します。また、uuidの中身が""であってもFALSEを返しますので、有効かどうかを判定する方法としてはこちらのほうが優れています。(<code>if(uuid != NULL_KEY)</code>ではuuidが""のとき、TRUEを返します)
※さらに、<code>if(uuid != NULL_KEY)</code>と違って、uuidの中身が""であっても、FALSEを返しますので、有効かどうかを判定する方法としてはこちらのほうが優れています。
+
 
|functions=
 
|functions=
 
{{LSL DefineRow||{{LSLG/ja|llAvatarOnSitTarget}}|}}
 
{{LSL DefineRow||{{LSLG/ja|llAvatarOnSitTarget}}|}}

Revision as of 01:28, 11 June 2009

Description

Constant: string NULL_KEY = "00000000-0000-0000-0000-000000000000";

The string constant NULL_KEY has the value "00000000-0000-0000-0000-000000000000"

厳密には文字型の定数ですが、key型としてのみ使えます。

key型として有効な形式に従っていますが、条件文にkey型として与えらた場合、FALSE値として実行されます。

Related Articles

Functions

•  llAvatarOnSitTarget
•  llDetectedKey
•  llGetNotecardLine
•  llGetLandOwnerAt
•  llGetPermissionsKey
•  llGetTexture
•  llListen

Events

•  attach

Examples

<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>

Notes

4 文字以上の文字列定数をコードの複数の箇所で使っているのであれば、それらをグローバル定数に格納すべきです。かなりのメモリ節約になります。これについての詳細説明とサンプルは LSL Constants vs Globals にあります。
大概の状況でNULL_KEYは不要です。空文字列 ("") で充分でしょう。(状況によっては)NULL_KEYの利用は避けられるべきです。多くのアプリケーションでkey値はNULL_KEYと比較されて有効/無効を判定されます。これは良くない慣習です。

LSLではkeyが有効であるかを簡単に調べられます。条件文にkeyをそのまま入れるだけです。

すなわち if(uuid != NULL_KEY) とするのでなく if(uuid) とします。if(uuid) はkeyが有効である、すなわちNULL_KEYでない場合のみTRUEを返します。また、uuidの中身が""であってもFALSEを返しますので、有効かどうかを判定する方法としてはこちらのほうが優れています。(if(uuid != NULL_KEY)ではuuidが""のとき、TRUEを返します)

Deep Notes

Search JIRA for related Issues

Signature

string NULL_KEY = "00000000-0000-0000-0000-000000000000";