NULL KEY/ja

From Second Life Wiki

Jump to: navigation, search

Contents

解説

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

stringの定数NULL_KEYは"00000000-0000-0000-0000-000000000000"の値をもちます。

正式には文字型の定数ですが、key (UUID) として使う以外の用途はありません。

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を、""ならば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を返します)

Personal tools
In other languages