NULL_KEY
string NULL_KEY = "00000000-0000-0000-0000-000000000000";NULL_KEY is a string. However it is only really useful as a key.
For Conditional tests, NULL_KEY evaluates to TRUE like other strings.
For list search (like llListFindList), NULL_KEY won’t match null keys whose type is key without typecasting.
Examples
Section titled “Examples”Example 1
// Returns 2 for valid keys, 1 for NULL_KEY, 0 for invalid keys.integer isKey(key input){ if (input) return 2; return (input == NULL_KEY);}Example 2
default{ state_entry() { // NULL_KEY itself is evaluated as FALSE only when typecast to key. if (NULL_KEY) { llOwnerSay("NULL_KEY is TRUE"); } // Correct. else { llOwnerSay("NULL_KEY is FALSE"); } // Never.
if ((key) NULL_KEY) { llOwnerSay("Casted NULL_KEY is TRUE"); } // Never. else { llOwnerSay("Casted NULL_KEY is FALSE"); } // Correct.
// NULL_KEY won't match keys in lists without typecasting. // The following list contains a null key because avatars don't have creators: list details = llGetObjectDetails(llGetOwner(), [OBJECT_CREATOR]); integer index = llListFindList(details, [NULL_KEY]); if (index >= 0) { llOwnerSay("NULL_KEY was found in list"); } // Never. else { llOwnerSay("NULL_KEY was NOT found in list"); } // Correct. }}In most situations NULL_KEY isn’t needed; an empty string ("") will suffice. To take advantage of this certain practices have to be avoided. In many applications keys are checked against NULL_KEY to determine if they are valid; this is bad practice.
LSL makes it easy to check if a key is valid. Simply use the key as the parameter for a conditional.
That is, instead of if(uuid != NULL_KEY), use if(uuid). if(uuid) will only return TRUE if it is a valid key that is also not a null key.
Like any LSO string constants longer then 3 characters and used in multiple places in the code, they should be stored in a global variable. The result will be a considerable memory savings. This does not apply to scripts compiled with Mono. See LSL Constants vs Globals for more information about this and examples.
Known issues
Section titled “Known issues”- SVC-5772:
NULL_KEYis no longer aNULL_KEYwhen passed to a function
See also
Section titled “See also”Functions
Section titled “Functions”llAvatarOnSitTargetllDetectedKeyllGetNotecardLinellGetLandOwnerAtllGetPermissionsKeyllGetTexturellListen
Events
Section titled “Events”Original wiki source
Some wiki templates and tables need their original context. View this article on the Second Life Wiki. Technical wording and examples are retained from the source; historical guidance may differ from current behavior.