isNil: Difference between revisions

From Bohemia Interactive Community
Jump to navigation Jump to search
m (Text replacement - " <h3 style="display:none">Notes</h3> <dl class="command_description"> <!-- Note Section BEGIN --> <!-- Note Section END --> </dl> " to "")
m (Text replacement - " *\| *([Cc]omments|COMMENTS|Game|[Gg]ame [Nn]ame|Game [Vv]ersion|Game Version \(number surrounded by NO SPACES\)|Multiplayer Arguments( \("local" or "global"\))?|Effects|Multiplayer Effects( \("local" or "global"\))?|Multiplayer Exe...)
Line 1: Line 1:
{{Command|Comments=
{{Command


| arma1 |Game name=
| arma1


|1.00|Game version=
|1.00


|gr1= Variables |GROUP1=
|gr1= Variables


| Tests whether the variable given by its name is [[nil]] or undefined, or whether the given expression evaluates to [[nil]] or [[Nothing]].
| Tests whether the variable given by its name is [[nil]] or undefined, or whether the given expression evaluates to [[nil]] or [[Nothing]].
{{Informative | {{GVI|ofp|1.00}} This command doesn't exist in {{ofp}} but can be emulated (see '''[[#Examples|Example 5]]''').}} |Description=
{{Informative | {{GVI|ofp|1.00}} This command doesn't exist in {{ofp}} but can be emulated (see '''[[#Examples|Example 5]]''').}}


| [[isNil]] variableName |Syntax=
| [[isNil]] variableName


|p1= variableName: [[String]] - name of a [[missionNamespace]] variable (e.g "someVar") or a local variable (e.g "_someVar") |Parameter 1=
|p1= variableName: [[String]] - name of a [[missionNamespace]] variable (e.g "someVar") or a local variable (e.g "_someVar")


| [[Boolean]] - [[true]] if variable is [[nil]] |Return value=
| [[Boolean]] - [[true]] if variable is [[nil]]


|s2= [[isNil]] code |Syntax 2=
|s2= [[isNil]] code |Syntax 2=
Line 22: Line 22:
* the code will not be allowed [[canSuspend|to suspend]] while expression is evaluated, even if the parent scope allows it (see '''[[#Examples|Example 4]]'''). |Parameter 21=
* the code will not be allowed [[canSuspend|to suspend]] while expression is evaluated, even if the parent scope allows it (see '''[[#Examples|Example 4]]'''). |Parameter 21=


|r2= [[Boolean]] - [[true]] if code returns something other than [[Nothing]] |Return value 2=
|r2= [[Boolean]] - [[true]] if code returns something other than [[Nothing]]


|x1= <code>[[if]] ([[isNil]] "pokus") [[then]] { pokus = 0; };</code> |Example1=
|x1= <code>[[if]] ([[isNil]] "pokus") [[then]] { pokus = 0; };</code>


|x2= <code>[[isNil]] { [[player]] [[getVariable]] "someVar" };</code> |Example2=
|x2= <code>[[isNil]] { [[player]] [[getVariable]] "someVar" };</code>


|x3= <code>_myArray = [0, 1];
|x3= <code>_myArray = [0, 1];
Line 33: Line 33:
[[isNil]] { _myArray [[select]] 2 }; {{cc|returns [[true]]}}
[[isNil]] { _myArray [[select]] 2 }; {{cc|returns [[true]]}}
[[isNil]] { _myArray [[select]] 3 }; {{cc|throws a script error. only length+1 select is allowed}}
[[isNil]] { _myArray [[select]] 3 }; {{cc|throws a script error. only length+1 select is allowed}}
</code> |Example 3=
</code>


|x4= You can do this trick to force execute something in [[Scheduler|Unscheduled Environment]].<code>[[spawn]] {
|x4= You can do this trick to force execute something in [[Scheduler|Unscheduled Environment]].<code>[[spawn]] {
[[systemChat]] [[str]] [[canSuspend]]; {{cc|chat shows [[true]]}}
[[systemChat]] [[str]] [[canSuspend]]; {{cc|chat shows [[true]]}}
[[isNil]] {[[hint]] [[str]] [[canSuspend]]}; {{cc|hint shows [[false]]}}
[[isNil]] {[[hint]] [[str]] [[canSuspend]]}; {{cc|hint shows [[false]]}}
};</code> |Example 4=
};</code>


|x5= {{ofp}} workaround:<br>SQS syntax:
|x5= {{ofp}} workaround:<br>SQS syntax:
Line 46: Line 46:
<code>_nil = [[format]] ["%1", _undefinedVariable];
<code>_nil = [[format]] ["%1", _undefinedVariable];
[[if]] ([[format]] ["%1", foo] == _nil) [[then]] { foo = "value"; };</code>
[[if]] ([[format]] ["%1", foo] == _nil) [[then]] { foo = "value"; };</code>
|Example 5=


| [[nil]], [[Variables]], [[Scheduler]] |See also=
 
| [[nil]], [[Variables]], [[Scheduler]]
}}
}}



Revision as of 01:39, 18 January 2021

Hover & click on the images for description

Description

Description:
Tests whether the variable given by its name is nil or undefined, or whether the given expression evaluates to nil or Nothing.
Logo A0.png1.00 This command doesn't exist in Operation Flashpoint but can be emulated (see Example 5).
Groups:
Variables

Syntax

Syntax:
isNil variableName
Parameters:
variableName: String - name of a missionNamespace variable (e.g "someVar") or a local variable (e.g "_someVar")
Return Value:
Boolean - true if variable is nil

Alternative Syntax

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 something other than Nothing

Examples

Example 1:
if (isNil "pokus") then { pokus = 0; };
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:
You can do this trick to force execute something in Unscheduled Environment.spawn { systemChat str canSuspend; // chat shows true isNil {hint str canSuspend}; // hint shows false };
Example 5:
Operation Flashpoint workaround:
SQS syntax: _nil = format ["%1", _undefinedVariable] ? (format ["%1", foo] == _nil) : foo = "value" SQF syntax: _nil = format ["%1", _undefinedVariable]; if (format ["%1", foo] == _nil) then { foo = "value"; };

Additional Information

See also:
nilVariablesScheduler

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

Bottom Section