isNil: Difference between revisions
Lou Montana (talk | contribs) m (Text replacement - "<code>([^ ]*)\[\[([a-zA-Z][a-zA-Z0-9_]+)\]\]([^ ]*)<\/code>" to "<code>$1$2$3</code>")  | 
				Lou Montana (talk | contribs)   (Add v2.20)  | 
				||
| (29 intermediate revisions by 3 users not shown) | |||
| Line 19: | Line 19: | ||
|descr= Tests whether a variable is [[nil]] or undefined from its [[Identifier|identifier]], or whether the given expression evaluates to [[nil]] or [[Nothing]].  | |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 {{  | {{Feature|arma0|This command does not exist in {{ofp}}/{{arma0}} but can be emulated (see {{Link|#Example 5}}).}}  | ||
|s1= [[isNil]] variableName  | |s1= [[isNil]] variableName  | ||
| Line 25: | Line 25: | ||
|p1= variableName: '''[[String]]''' - [[missionNamespace]]'s or local [[Variables|variable]]'s [[Identifier|identifier]] (e.g "globalVariable", "_localVariable")  | |p1= variableName: '''[[String]]''' - [[missionNamespace]]'s or local [[Variables|variable]]'s [[Identifier|identifier]] (e.g "globalVariable", "_localVariable")  | ||
|r1= [[Boolean]] - [[true]] if variable is [[nil]]  | |r1= [[Boolean]] - [[true]] if variable is [[nil]] or undefined  | ||
|s2= [[isNil]] code  | |s2= [[isNil]] code  | ||
|p21= code: [[Code]] - code to evaluate:  | |p21= code: [[Code]] - code to evaluate:  | ||
* the code '''will''' be executed;   | * 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 {{  | * the code will not be allowed to [[canSuspend|suspend]] while expression is evaluated, even if the parent scope allows it (see {{Link|#Example 4}}).  | ||
|r2= [[Boolean]] - [[true]] if ''code'' returns [[Nothing]], [[false]] otherwise  | |r2= [[Boolean]] - [[true]] if ''code'' returns [[Nothing]], [[false]] otherwise  | ||
|  | |s3= namespace [[isNil]] variableName  | ||
[[  | |s3since= arma3 2.18  | ||
|p41= namespace: [[Namespace]], [[Object]], [[Group]], [[HashMap]], {{GVI|arma3|2.20|size= 0.75}} [[Control]] and [[Display]]  | |||
|p42= variableName: [[String]]    | |||
|r3= [[Boolean]] - [[true]] if variable is [[nil]] or undefined  | |||
|  | |x1= <sqf>  | ||
if (isNil "TAG_globalVariable") then { TAG_globalVariable = 0 };  | |||
if (isNil "_localVariable") then { hint "_localVariable is nil" };  | |||
</sqf>  | |||
|x3= <  | |x2= <sqf>isNil { player getVariable "someVar" };</sqf>  | ||
|x3= <sqf>  | |||
_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  | |||
</sqf>  | |||
|x4= This trick forces executing something in [[Scheduler|Unscheduled Environment]]:  | |x4= This trick forces executing something in [[Scheduler|Unscheduled Environment]]:  | ||
<  | <sqf>  | ||
0 spawn {  | |||
	systemChat str canSuspend;		// chat shows true  | |||
	isNil { hint str canSuspend };	// hint shows false  | |||
};  | |||
</sqf>  | |||
|x5= {{ofp}} [[String]] comparison workaround<br>  | |||
[[SQS Syntax]]:  | |||
<sqs>  | |||
_nil = format ["%1", _undefinedVariable]  | |||
? (format ["%1", variableToTest] == _nil) : hint "variableToTest is nil"  | |||
</sqs>  | |||
[[SQF Syntax]]:  | |||
<sqf>  | |||
_nil = format ["%1", _undefinedVariable];  | |||
if (format ["%1", variableToTest] == _nil) then { hint "variableToTest is nil" };  | |||
<  | </sqf>  | ||
_nil =   | |||
|seealso= [[nil]] [[Variables]] [[Scheduler]]  | |seealso= [[nil]] [[Variables]] [[Scheduler]]  | ||
}}  | }}  | ||
Latest revision as of 01:01, 18 February 2025
Description
- Description:
 - Tests whether a variable is nil or undefined from its identifier, or whether the given expression evaluates to nil or Nothing.
 - 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:
 - Return Value:
 - Boolean - true if code returns Nothing, false otherwise
 
Syntax 3
- Syntax:
 - namespace isNil variableName
 - Parameters:
 - namespace: Namespace, Object, Group, HashMap, 
 2.20 Control and Display - variableName: String
 - Return Value:
 - Boolean - true if variable is nil or undefined
 
Examples
- Example 1:
 - Example 2:
 - Example 3:
 - 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:SQF Syntax: 
Additional Information
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 
Categories: 
- Scripting Commands
 - Introduced with Armed Assault version 1.00
 - ArmA: Armed Assault: New Scripting Commands
 - ArmA: Armed Assault: Scripting Commands
 - Arma 2: Scripting Commands
 - Arma 2: Operation Arrowhead: Scripting Commands
 - Take On Helicopters: Scripting Commands
 - Arma 3: Scripting Commands
 - Command Group: Variables