Void: Difference between revisions
(→Names: Merged in string values.) |
|||
Line 51: | Line 51: | ||
defined=false;if var==var then {defined=true};if var!=var then {defined=true}; | defined=false;if var==var then {defined=true};if var!=var then {defined=true}; | ||
if !defined then {/*we know it is undefined here*/} | if !defined then {/*we know it is undefined here*/} | ||
The code above should not work in [[ArmA 2]], as stated [[ArmA:_Editing#Forward_Compatility|here]]. | |||
In Armed Assault or later [[isNil]] is the preferred way to check for this, like | In Armed Assault or later [[isNil]] is the preferred way to check for this, like |
Revision as of 12:48, 15 April 2008
A variable of type Void is an undefined variable.
Undefining Variables
You can use nil to undefine variables.
myVar = 1; ... myVar = nil; myVar => undefined
Comparisons
No comparison with variables of this type will work.
Example:
// error if (undefinedVar == ...) then ...
// error if (undefinedVar == undefinedVar) then ...
In Operation Flashpoint, a Variable becomes undefined when it is assigned to an undefined value, or an expression which refers to an undefined value somewhere.
Names
The String representation of an undefined variable is one of the following:
Anything: scalar bool array string 0xfcffffef (OFP)
Anything: scalar bool array string 0xe0ffffef (ArmA)
Nothing: scalar bool array string nothing 0xfcffffef
Number: scalar
Boolean: bool
Array: array
Caution: the string specification of the undefined variables is undocumented, and it is very likely to change in future version of the scripting language.
The reliable way to check if the variable is undefined is that it silently fails any expression evaluations on it.
Example:
defined=false;if var==var then {defined=true};if var!=var then {defined=true}; if !defined then {/*we know it is undefined here*/}
The code above should not work in ArmA 2, as stated here.
In Armed Assault or later isNil is the preferred way to check for this, like
isNil "varName"
Type Inference
Suppose the variable a is undefined, and we set the variable b like so:
b = a + []
The inferred type of b is now array - since b was the product result of an array add operation with a definite array ([]) and an unknown type (a)
b's string representation will now be 'array', and b wil be considered an undefined array.