isNil: Difference between revisions
No edit summary  | 
				Lou Montana (talk | contribs)   (Add v2.20)  | 
				||
| (97 intermediate revisions by 17 users not shown) | |||
| Line 1: | Line 1: | ||
{{  | {{RV|type=command  | ||
|   | |game1= arma1  | ||
|version1= 1.00  | |||
|1.00  | |game2= arma2  | ||
|version2= 1.00  | |||
|   | |game3= arma2oa  | ||
|version3= 1.50  | |||
|   | |game4= tkoh  | ||
|version4= 1.00  | |||
|  | |game5= arma3  | ||
|version5= 0.50  | |||
|   | |gr1= Variables  | ||
}}  | |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}}).  | |||
|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>  | |||
|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]]:  | |||
<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>  | |||
|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