isNil: Difference between revisions

From Bohemia Interactive Community
Jump to navigation Jump to search
m (2.16 -> 2.18)
 
(86 intermediate revisions by 13 users not shown)
Line 1: Line 1:
{{Command|= Comments
{{RV|type=command
____________________________________________________________________________________________


| arma |= Game name
|game1= arma1
|version1= 1.00


|1.00|= Game version
|game2= arma2
____________________________________________________________________________________________
|version2= 1.00


| Tests whether the variable defined by the [[String]] argument is undefined, or whether an expression result passed as [[Code]] is undefined. The function returns true if the variable is undefined or the expression result undefined (i.e. the expression result is [[Void]]), and false in all other cases. |= Description
|game3= arma2oa
____________________________________________________________________________________________
|version3= 1.50


| [[Boolean]] <nowiki>=</nowiki> '''isnil''' variable |= Syntax
|game4= tkoh
|version4= 1.00


|p1= variable: [[String]] or [[Code]]|= Parameter 1
|game5= arma3
|version5= 0.50


| [[Boolean]] |= Return value
|gr1= Variables
____________________________________________________________________________________________
|x1 = <code> [[if]] ('''isnil''' ("_pokus")) [[then]] {_pokus<nowiki>=</nowiki>0;} </code>
|  |= See also


}}
|descr= Tests whether a variable is [[nil]] or undefined from its [[Identifier|identifier]], or whether the given expression evaluates to [[nil]] or [[Nothing]].
{{Feature|arma0|This command does not exist in {{ofp}}/{{arma0}} but can be emulated (see {{Link|#Example 5}}).}}
 
|s1= [[isNil]] variableName
 
|p1= variableName: '''[[String]]''' - [[missionNamespace]]'s or local [[Variables|variable]]'s [[Identifier|identifier]] (e.g "globalVariable", "_localVariable")
 
|r1= [[Boolean]] - [[true]] if variable is [[nil]] or undefined
 
|s2= [[isNil]] code
 
|p21= code: [[Code]] - code to evaluate:
* the code '''will''' be executed; <sqf inline>isNil { player setDamage 1 };</sqf> ''will'' kill the player
* the code will not be allowed to [[canSuspend|suspend]] while expression is evaluated, even if the parent scope allows it (see {{Link|#Example 4}}).


<h3 style="display:none">Notes</h3>
|r2= [[Boolean]] - [[true]] if ''code'' returns [[Nothing]], [[false]] otherwise
<dl class="command_description">
<!-- Note Section BEGIN -->


|s3= namespace [[isNil]] variableName
|s3since= arma3 2.18
|p41= namespace: [[Namespace]], [[Object]], [[Group]] or [[HashMap]]
|p42= variableName: [[String]]
|r3= [[Boolean]] - [[true]] if variable is [[nil]] or undefined


<dt class="note">'''[[User:ColonelSandersLite|ColonelSandersLite]]'''
|x1= <sqf>
<dd class="note"><br>
if (isNil "TAG_globalVariable") then { TAG_globalVariable = 0 };
I recently had a strange experience with this command.  I forgot to wrap the name of the variable with quotes, and it returned the opposite of the true null status of the variable.  Just something to watch out for.
if (isNil "_localVariable") then { hint "_localVariable is nil" };
</sqf>


|x2= <sqf>isNil { player getVariable "someVar" };</sqf>


<dt class="note">'''[[User:General_Barron|General Barron]]'''
|x3= <sqf>
<dd class="note"><br>
_myArray = [0, 1];
^ If you don't wrap the name of the variable in quotes, then it will instead read the value of the variable itself. If that variable is a string or code, then the command will use that string or code held by the variable. Example:
isNil { _myArray select 0 }; // returns false
isNil { _myArray select 1 }; // returns false
isNil { _myArray select 2 }; // returns true
isNil { _myArray select 3 }; // throws a script error. only length+1 select is allowed
</sqf>


<pre>_myvar = "_hisvar";
|x4= This trick forces executing something in [[Scheduler|Unscheduled Environment]]:
isnil _myvar;
<sqf>
//will return true if _hisvar is null
0 spawn {
_myvar = {tank1};
systemChat str canSuspend; // chat shows true
sleep (random 50);
isNil { hint str canSuspend }; // hint shows false
isnil _myvar;
};
//will return if tank1 is nil, at the time the isnil command is checked (not at the time _myvar is established)
</sqf>
</pre>
--[[User:General Barron|General Barron]] 10:37, 30 December 2009 (CET)


|x5= {{ofp}} [[String]] comparison workaround<br>
[[SQS Syntax]]:
<sqs>
_nil = format ["%1", _undefinedVariable]
? (format ["%1", variableToTest] == _nil) : hint "variableToTest is nil"
</sqs>


<!-- Note Section END -->
[[SQF Syntax]]:
</dl>
<sqf>
_nil = format ["%1", _undefinedVariable];
if (format ["%1", variableToTest] == _nil) then { hint "variableToTest is nil" };
</sqf>


<h3 style="display:none">Bottom Section</h3>
|seealso= [[nil]] [[Variables]] [[Scheduler]]
[[Category:Scripting Commands|ISNIL]]
}}
[[Category:Scripting Commands ArmA|ISNIL]]
[[Category:Command_Group:_Object_Information|{{uc:{{PAGENAME}}}}]]
[[Category:Command_Group:_Variables|{{uc:{{PAGENAME}}}}]]
[[Category:Scripting Commands ArmA2|{{uc:{{PAGENAME}}}}]]
[[Category:Scripting_Commands_Take_On_Helicopters|{{uc:{{PAGENAME}}}}]]

Latest revision as of 15:03, 8 February 2024

Hover & click on the images for description

Description

Description:
Tests whether a variable is nil or undefined from its identifier, or whether the given expression evaluates to nil or Nothing.
Operation Flashpoint
This command does not exist in Operation Flashpoint/Arma: Cold War Assault but can be emulated (see Example 5).
Groups:
Variables

Syntax 1

Syntax:
isNil variableName
Parameters:
variableName: String - missionNamespace's or local variable's identifier (e.g "globalVariable", "_localVariable")
Return Value:
Boolean - true if variable is nil or undefined

Syntax 2

Syntax:
isNil code
Parameters:
code: Code - code to evaluate:
  • the code will be executed; isNil { player setDamage 1 }; will kill the player
  • the code will not be allowed to suspend while expression is evaluated, even if the parent scope allows it (see Example 4).
Return Value:
Boolean - true if code returns Nothing, false otherwise

Syntax 3

Syntax:
namespace isNil variableName
Parameters:
namespace: Namespace, Object, Group or HashMap
variableName: String
Return Value:
Boolean - true if variable is nil or undefined

Examples

Example 1:
if (isNil "TAG_globalVariable") then { TAG_globalVariable = 0 }; if (isNil "_localVariable") then { hint "_localVariable is nil" };
Example 2:
isNil { player getVariable "someVar" };
Example 3:
_myArray = [0, 1]; isNil { _myArray select 0 }; // returns false isNil { _myArray select 1 }; // returns false isNil { _myArray select 2 }; // returns true isNil { _myArray select 3 }; // throws a script error. only length+1 select is allowed
Example 4:
This trick forces executing something in Unscheduled Environment:
0 spawn { systemChat str canSuspend; // chat shows true isNil { hint str canSuspend }; // hint shows false };
Example 5:
Operation Flashpoint String comparison workaround
SQS Syntax:
_nil = format ["%1", _undefinedVariable] ? (format ["%1", variableToTest] == _nil) : hint "variableToTest is nil"
SQF Syntax:
_nil = format ["%1", _undefinedVariable]; if (format ["%1", variableToTest] == _nil) then { hint "variableToTest is nil" };

Additional Information

See also:
nil Variables Scheduler

Notes

Report bugs on the Feedback Tracker and/or discuss them on the Arma Discord or on the Forums.
Only post proven facts here! Add Note