switch do: Difference between revisions
Jump to navigation
Jump to search
Lou Montana (talk | contribs) m (Text replacement - "<dd class="notedate">Posted on ([^<>]+) " to "<dd class="notedate">Posted on $1</dd> ") |
Lou Montana (talk | contribs) m (Text replacement - "\{\{( *)Informative( *)\|" to "{{$1Feature$2|$2Informative$2|") |
||
Line 12: | Line 12: | ||
The [[default]] block will be executed '''only if''' no case matches, no matter at which position inside the switch it is. It is not a case, and will '''never''' be entered by fallthrough.<br> | The [[default]] block will be executed '''only if''' no case matches, no matter at which position inside the switch it is. It is not a case, and will '''never''' be entered by fallthrough.<br> | ||
{{Informative|[[String]] comparison is case-sensitive. Use [[toUpper]], [[toLower]], [[toLowerANSI]] or [[toUpperANSI]] to force all [[String|strings]] to the same case.}}</br> | {{Feature|Informative|[[String]] comparison is case-sensitive. Use [[toUpper]], [[toLower]], [[toLowerANSI]] or [[toUpperANSI]] to force all [[String|strings]] to the same case.}}</br> | ||
{{Informative|If no [[default]] block is provided and no [[case]] is matched, the default value [[true]] is returned. Otherwise it returns whatever the valid case block returns.}} | {{Feature|Informative|If no [[default]] block is provided and no [[case]] is matched, the default value [[true]] is returned. Otherwise it returns whatever the valid case block returns.}} | ||
| switch '''do''' block | | switch '''do''' block |
Revision as of 00:14, 7 February 2021
Description
- Description:
- Description needed
- Groups:
- Program Flow
Syntax
- Syntax:
- Syntax needed
- Parameters:
- switch: Switch Type
- block: Code
- Return Value:
- Return value needed
Examples
- Example 1:
switch (_a) do { case 1 : { /*...code...*/ }; case 2 : { /*...code...*/ }; default { /*...code...*/ }; };
switch (_condition) do { case 1: { hint "1" }; case 2: { hint "2" }; default { hint "default" }; };
switch (_condition) do { case "string1"; case "string2": { hint "string1 or string2" }; case "string3"; case "string4": { hint "string3 or string4" }; default { hint "default" }; };
- Example 2:
_color = switch (side player) do { case west: { "ColorGreen" }; case east: { "ColorRed" }; };
- Example 3:
_fn_moveForward = { /*...code...*/ }; _fn_moveBackward = { /*...code...*/ }; _fn_invalidKey = { /*...code...*/ }; switch true do { case (_dikCode in actionKeys "MoveForward"): _fn_moveForward; case (_dikCode in actionKeys "MoveBackward"): _fn_moveBackward; default _fn_invalidKey; };
- Example 4:
switch _var do { case "0"; default { hint str ["default", _var] }; case "3": { hint str ["3", _var] }; case "1"; case "4"; case "2": { hint str ["2", _var] }; };
_var = "0"; //-> ["3", "0"] _var = "1"; //-> ["2", "1"] _var = "2"; //-> ["2", "2"] _var = "3"; //-> ["3", "3"] _var = "4"; //-> ["2", "4"] _var = "5"; //-> ["default", "5"]
Additional Information
- See also:
- See also needed
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 07 Aug, 2008
- ColonelSandersLite
Be careful of the parenthesis around the variable you're switching on. If you accidentally use braces instead (ex: switch {_myVar} do{...), it won't error, but will always return default.
- Posted on 06 Oct, 2009
- Iva
-
It's possible to use Boolean value as a switch and Code as case. One thing to take special care in such case is that code must be in parentheses. Example:
switch (true) do { case (_boolVar): {someCode}; case (unit1 distance unit2 > 5): {someCode}; };
- Posted on Nobember 1, 2020 - 10:05 (UTC)
- Freddo3000
-
You are able to call code within the switch statements, such as:
_myFunc = { systemChat "0"; case 1: {systemChat "1"}; systemChat "2"; }; _myParameter = 1; switch (_myParameter) do { _myParameter call _myFunc; case 1: {systemChat "4"}; systemChat "3"; default {systemChat "-1";}; };
However the order in which it is executed is difficult to make sense of, see the code comment. This is used by BIS_fnc_missionConversations and BIS_fnc_missionTasks