Difference between revisions of "NULL KEY/ja"

From Second Life Wiki
Jump to navigation Jump to search
 
(3 intermediate revisions by 2 users not shown)
Line 1: Line 1:
{{multi-lang|1=NULL_KEY|2=/ja}}
{{Issues/SVC-5772}}{{LSL_Constant/string/ja}}{{LSL Constant/ja
{{LSL_Constant/string/ja}}{{LSL Constant
|name=NULL_KEY
|name=NULL_KEY
|type=string
|type=string
|value="00000000-0000-0000-0000-000000000000"
|value="00000000-0000-0000-0000-000000000000"
|desc=厳密には文字型の定数ですが、{{LSLG/ja|key}}型としてのみ使えます。
|desc=<span style="color:red;">'''NULL_KEY は {{LSLG/ja|string}} です。'''</span> しかし、 {{LSLG/ja|key}} として使う以外の用途はありません。


[[key/ja|key]]型として有効な形式に従っていますが、{{LSLGC|Conditional/ja|条件文}}にkey型として与えらた場合、{{LSLG/ja|FALSE}}値として実行されます。
{{LSLG/ja|key}} として有効な形式に従っていますが、 key として {{LSLGC|条件文}} で評価すると、 {{LSLG/ja|FALSE}} と判定されます。
|examples=
|examples=
<lsl>integer isKey(key in) {
<source lang="lsl2">integer isKey(key in) {
     if(in) return 2;
     if(in) return 2;
     return (in == NULL_KEY);
     return (in == NULL_KEY);
}//有効なkeyならば2を、NULL_KEYならば1を、""ならば0を返します。</lsl>
}////有効な key ならば 2 を、 NULL_KEY ならば 1 を返します。</source>
<source lang="lsl2">// 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"); }// 正しい。
    }
}</source>
|notes=ほとんどの状況では、 NULL_KEY を使う必要はありません。空文字列 ("") で間に合います。 NULL_KEY を習慣のように使うのは、避けたほうがよいでしょう。多くのアプリケーションで、 key を NULL_KEY と比較して、有効かどうかをチェックしていますが、これは良くないやり方です。


<lsl>//上記ユーザー関数を使った結果のテスト
LSL では key 値の有効・無効を簡単に調べられます。条件文に key 値をそのまま入れるだけです。
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=大概の状況でNULL_KEYは不要です。空文字列 ("") で充分でしょう。(状況によっては)NULL_KEYの利用は避けられるべきです。多くのアプリケーションでkey値はNULL_KEYと比較されて有効/無効を判定されます。これは良くない慣習です。


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


すなわち <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> とするのでなく <code>if(uuid)</code> とします。 <code>if(uuid)</code> は NULL でない有効な key であるときに {{LSLG/ja|TRUE}} が返ります。
 
|functions=
|functions=
{{LSL DefineRow||{{LSLG/ja|llAvatarOnSitTarget}}|}}
{{LSL DefineRow||{{LSLG/ja|llAvatarOnSitTarget}}|}}

Latest revision as of 13:37, 25 February 2016

解説

定数: string NULL_KEY = "00000000-0000-0000-0000-000000000000";

string 定数 NULL_KEY の値は "00000000-0000-0000-0000-000000000000" です。

NULL_KEY は string です。 しかし、 key として使う以外の用途はありません。

key として有効な形式に従っていますが、 key として 条件文 で評価すると、 FALSE と判定されます。

関連記事

関数

•  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 を返します。
// 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"); }// 正しい。
    }
}

注意事項

4 文字以上の文字列定数をコードの複数の箇所で使っているのであれば、それらをグローバル定数に格納すべきです。かなりのメモリ節約になります。これについての詳細説明とサンプルは LSL Constants vs Globals にあります。
ほとんどの状況では、 NULL_KEY を使う必要はありません。空文字列 ("") で間に合います。 NULL_KEY を習慣のように使うのは、避けたほうがよいでしょう。多くのアプリケーションで、 key を NULL_KEY と比較して、有効かどうかをチェックしていますが、これは良くないやり方です。

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


すなわち if(uuid != NULL_KEY) とするのでなく if(uuid) とします。 if(uuid) は NULL でない有効な key であるときに TRUE が返ります。

特記事項

全ての記事

~ JIRA で関連記事を検索
   NULL_KEY is no longer a NULL_KEY when passed to a function
この翻訳は 原文 と比べて古いですか?間違いがありますか?読みにくいですか?みんなで 修正 していきましょう! (手順はこちら)