if: Difference between revisions
Jump to navigation
Jump to search
No edit summary |
Lou Montana (talk | contribs) m (Text replacement - "<sqf>([^↵][^<]*↵[^<]*)<\/sqf>" to "<sqf> $1 </sqf>") |
||
(One intermediate revision by the same user not shown) | |||
Line 73: | Line 73: | ||
{{Note | {{Note | ||
|user= | |user= AgentRev | ||
|timestamp= 20150605093500 | |timestamp= 20150605093500 | ||
|text= If you only need to choose between 2 raw values, it is possible to use the following trick to avoid using code blocks, as required by the if command, which results in greater atomicity and faster execution: | |text= If you only need to choose between 2 raw values, it is possible to use the following trick to avoid using code blocks, as required by the if command, which results in greater atomicity and faster execution: | ||
Line 85: | Line 85: | ||
|timestamp= 20220519011146 | |timestamp= 20220519011146 | ||
|text= When using '''if''' to assign values to a variable, if you not have an [[else]] block it is treated as [[nil]] and returned, setting the variable value to [[nil]]. A3 2.08.149102 | |text= When using '''if''' to assign values to a variable, if you not have an [[else]] block it is treated as [[nil]] and returned, setting the variable value to [[nil]]. A3 2.08.149102 | ||
<sqf>private _myVar = "value"; | <sqf> | ||
private _myVar = "value"; | |||
private _condition = false; | private _condition = false; | ||
_myVar = if (_condition) then { "another value" }; //perfectly valid sqf | _myVar = if (_condition) then { "another value" }; //perfectly valid sqf | ||
Line 91: | Line 92: | ||
//_myVar is now nil | //_myVar is now nil | ||
_myVar = if (_condition) then { "another value" } else { "value" }; | _myVar = if (_condition) then { "another value" } else { "value" }; | ||
systemChat _myVar; //returns "value"</sqf> | systemChat _myVar; //returns "value" | ||
</sqf> | |||
This behavior can be both desirable and undesirable depending on your needs | This behavior can be both desirable and undesirable depending on your needs | ||
}} | }} |
Latest revision as of 19:43, 3 September 2024
Description
- Description:
- This operator creates a If Type which is used in the if-construct as described here.
- Groups:
- Program Flow
Syntax
- Syntax:
- if condition
- Parameters:
- condition: Boolean - if it evaluates as true, the then clause is executed. Otherwise, the else clause (if present) is executed
- Return Value:
- If Type - predicate which will execute 1st or 2nd option when used. This predicate is used in then or exitWith commands
Examples
- Example 1:
- Example 2:
Additional Information
- See also:
- else exitWith then Control Structures Lazy evaluation
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
- Posted on Jan 31, 2007 - 04:08 (UTC)
- Any _local variables you declare within the body of an if/then statement (ie between the curly braces) are local to that 'if' statement, and are destroyed at the end of the statement. If you know you want to use the variable outside the 'if' statement, make sure your declare it before the 'if' statement.
- Posted on Jan 17, 2010 - 02:40 (UTC)
-
If the condition is nil then neither the "then" nor the "else" section get executed, but the script will proceed with no error messages.
Example code:systemChat "script started"; // will get executed if (nil) then { systemChat "true"; // will never get executed } else { systemChat "false"; // will never get executed }; systemChat "script ended"; // will get executed
- Posted on Jun 05, 2015 - 09:35 (UTC)
- If you only need to choose between 2 raw values, it is possible to use the following trick to avoid using code blocks, as required by the if command, which results in greater atomicity and faster execution: The select command treats "false" as 0 and "true" as 1, therefore you can feed it a condition determining the array index of the value to be returned. Here is another example:
Categories:
- Scripting Commands
- Introduced with Operation Flashpoint version 1.85
- Operation Flashpoint: New Scripting Commands
- Operation Flashpoint: Scripting Commands
- Operation Flashpoint: Elite: 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: Program Flow