isNil: Difference between revisions

From Bohemia Interactive Community
Jump to navigation Jump to search
No edit summary
m (Add example, comments cleanup)
Line 2: Line 2:
____________________________________________________________________________________________
____________________________________________________________________________________________


| arma |= Game name
| arma |Game name=


|1.00|= Game version
|1.00|Game version=
____________________________________________________________________________________________
____________________________________________________________________________________________


| Tests whether the variable defined by the [[String]] argument is undefined, or whether an expression result passed as [[Code]] is undefined.
| Tests whether the variable defined by the [[String]] argument is undefined, or whether an expression result passed as [[Code]] is undefined.<br />
<br>The command returns [[true]] if the variable or the expression result is undefined (i.e. the expression result is [[Void]]), and [[false]] in all other cases. |= Description
The command returns [[true]] if the variable or the expression result is undefined (i.e. the expression result is [[Nothing]]), and [[false]] in all other cases.
{{Informative|{{GVI|ofp|1.00}} [[isNil]] doesn't exist in {{ofp}}, you can emulate it:
<code>{{codecomment|// [[SQS syntax]]}}
_nil {{=}} [[format]] ["%1", _undefinedVariable]
? ([[format]] ["%1", foo] {{=}}{{=}} _nil) : foo {{=}} "Hello World!"</code>
<code>{{codecomment|// [[SQF syntax]]}}
_nil {{=}} [[format]] ["%1", _undefinedVariable];
[[if]] ([[format]] ["%1", foo] {{=}}{{=}} _nil) [[then]] { foo {{=}} "Hello World!"; };</code>}} |Description=
____________________________________________________________________________________________
____________________________________________________________________________________________


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


|p1= variableName: [[String]] - name of [[missionNamespace]] variable (for example "someVar") or local variable (for example "_someVar") |= Parameter 1
|p1= variableName: [[String]] - name of [[missionNamespace]] variable (for example "someVar") or local variable (for example "_someVar") |Parameter 1=


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


| s2='''isNil''' code |= Syntax
|s2= [[isNil]] code |Syntax 2=


|p21= code: [[Code]]|= Parameter 1
|p21= code: [[Code]] - code to evaluate:
* the code '''will''' be executed. {{Inline code|[[isNil]] { [[player]] [[setDamage]] 1; };}} ''will'' kill the player
* the code will be executed in [[Scheduler#Unscheduled_Environment|'''unscheduled''' environment]]
&nbsp;|Parameter 21=


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


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


|x2 = <code>[[isNil]] {[[player]] [[getVariable]] "someVar"};</code>|= Example2
|x2= <code>[[isNil]] {[[player]] [[getVariable]] "someVar"};</code> |Example2=
 
|x3= <code>_myArray = [0,1];
[[isNil]] { _myArray [[select]] 0 }; {{codecomment|// returns [[false]]}}
[[isNil]] { _myArray [[select]] 1 }; {{codecomment|// returns [[false]]}}
[[isNil]] { _myArray [[select]] 2 }; {{codecomment|// returns [[true]]}}
[[isNil]] { _myArray [[select]] 3 }; {{codecomment|// throws a script error. only length+1 select is allowed}}
</code> |Example 3=
____________________________________________________________________________________________
____________________________________________________________________________________________


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


Line 37: Line 53:
<!-- Note Section BEGIN -->
<!-- Note Section BEGIN -->


<dt class="note">'''[[User:ColonelSandersLite|ColonelSandersLite]]'''
<dd class="note"><br>
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.
<dt class="note">'''[[User:General_Barron|General Barron]]'''
<dd class="note"><br>
^ 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:
<pre>_myvar = "_hisvar";
isnil _myvar;
//will return true if _hisvar is null
_myvar = {tank1};
sleep (random 50);
isnil _myvar;
//will return if tank1 is nil, at the time the isnil command is checked (not at the time _myvar is established)
</pre>
--[[User:General Barron|General Barron]] 10:37, 30 December 2009 (CET)
<dt class="note">'''[[User:Igneous01|Igneous01]]'''
<dd class="note"><br>
isNil is also able to check if an expression is undefined. As such, an alternative way to check variables would be:
<pre>
isNil {variable}
</pre>
you can use this method to also check if variables defined using setVariable exist as well:
<pre>
isNil {player getVariable "Something"}
</pre>
As well as testing if a function returns a value
<pre>
func_ChangeVehicleName =
{
  _this setVehicleVarName "newName";
};
if (isNil {player call func_ChangeVehicleName})    // returns true, because this function does not return anything
</pre>
<!-- Note Section END -->
<!-- Note Section END -->
</dl>
</dl>


<h3 style="display:none">Bottom Section</h3>
<h3 style="display:none">Bottom Section</h3>
[[Category:Scripting Commands|ISNIL]]
[[Category:Scripting Commands|{{uc:{{PAGENAME}}}}]]
[[Category:Scripting Commands ArmA|ISNIL]]
[[Category:Scripting Commands ArmA|{{uc:{{PAGENAME}}}}]]
[[Category:Command_Group:_Object_Information|{{uc:{{PAGENAME}}}}]]
[[Category:Command_Group:_Variables|{{uc:{{PAGENAME}}}}]]
[[Category:Scripting Commands ArmA2|{{uc:{{PAGENAME}}}}]]
[[Category:Scripting Commands ArmA2|{{uc:{{PAGENAME}}}}]]
[[Category:Scripting Commands Arma 3|{{uc:{{PAGENAME}}}}]]
[[Category:Scripting Commands Arma 3|{{uc:{{PAGENAME}}}}]]
[[Category:Scripting_Commands_Take_On_Helicopters|{{uc:{{PAGENAME}}}}]]
[[Category:Scripting_Commands_Take_On_Helicopters|{{uc:{{PAGENAME}}}}]]
 
[[Category:Command_Group:_Object_Information|{{uc:{{PAGENAME}}}}]]
<!-- CONTINUE Notes -->
[[Category:Command_Group:_Variables|{{uc:{{PAGENAME}}}}]]
<dl class="command_description">
<dd class="notedate">Posted on September 25, 2014 - 09:48 (UTC)</dd>
<dt class="note">[[User:Kenoxite|Kenoxite]]</dt>
<dd class="note">
While [[isNil]] isn't available in OFP/CWA you can easily emulate it with something like this:
<pre>
_nil = format["%1",_nilstring];
?(format["%1",foo]==_nil): foo = "Hello World!"
</pre>
</dd>
</dl>
<!-- DISCONTINUE Notes -->
 
<!-- CONTINUE Notes -->
<dl class="command_description">
<dd class="notedate">Posted on October 25, 2014 - 01:51 (UTC)</dd>
<dt class="note">[[User:DreadedEntity|DreadedEntity]]</dt>
<dd class="note">
You can also use [[isNil]] to check if an array element exists or if a [[setVariable]] variable exists
<code>_array = [0,1,2,3];
if (isNil {_array select 4}) then {hint "Element does not exist";};</code>
<code>if ([[isNil]] {[[missionNamespace]] [[getVariable]] "MY_VARIABLE"})</code>
When trying to test array elements, you can only test elements that are 1 element out of range. Testing elements 2 or more elements out of range will result in a script error.
</dd>
</dl>
<!-- DISCONTINUE Notes -->
 
<!-- CONTINUE Notes -->
<dl class="command_description">
<dd class="notedate">Posted on June 25, 2017 - 15:04 (UTC)</dd>
<dt class="note">[[User:IT07|IT07]]</dt>
<dd class="note">
'''isNil''' in combination with ''code'' '''will execute that code''' so be aware.
</dd>
</dl>
<!-- DISCONTINUE Notes -->
 
<!-- CONTINUE Notes -->
<dl class="command_description">
<dd class="notedate">Posted on July 18, 2017 - 10:25 (UTC)</dd>
<dt class="note">[[User:Dedmen|Dedmen]]</dt>
<dd class="note">
isNil CODE will execute the code in [[Scheduler#Unscheduled_Environment | unscheduled environment]]
</dd>
</dl>
<!-- DISCONTINUE Notes -->

Revision as of 02:01, 27 May 2018

-wrong parameter ("Arma") defined!-1.00
Hover & click on the images for description

Description

Description:
Tests whether the variable defined by the String argument is undefined, or whether an expression result passed as Code is undefined.
The command returns true if the variable or the expression result is undefined (i.e. the expression result is Nothing), and false in all other cases.
Logo A0.png1.00 isNil doesn't exist in Operation Flashpoint, you can emulate it:

// SQS syntax _nil = format ["%1", _undefinedVariable] ? (format ["%1", foo] == _nil) : foo = "Hello World!" // SQF syntax _nil = format ["%1", _undefinedVariable];

if (format ["%1", foo] == _nil) then { foo = "Hello World!"; };
Groups:
Uncategorised

Syntax

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

Alternative Syntax

Syntax:
isNil code
Parameters:
code: Code - code to evaluate:  
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

Additional Information

See also:
nilVariables

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

Notes

Bottom Section