switch do: Difference between revisions

From Bohemia Interactive Community
Jump to navigation Jump to search
m (Text replacement - "\{\{( *)Informative( *)\|" to "{{$1Feature$2|$2Informative$2|")
m (Text replacement - "<code> +" to "<code>")
Line 84: Line 84:
<dt class="note">[[User:Iva|Iva]]<dd class="note">
<dt class="note">[[User:Iva|Iva]]<dd class="note">
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:
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:
<code>
<code>[[switch]] ([[true]]) [[do]]
[[switch]] ([[true]]) [[do]]
{
{
[[case]] (_boolVar): {someCode};
[[case]] (_boolVar): {someCode};
Line 118: Line 117:
<br>this one below works, and the one above stopped working with 1.63
<br>this one below works, and the one above stopped working with 1.63
<br>
<br>
<code>
<code>[[switch]] (_number1) [[do]]
[[switch]] (_number1) [[do]]
{
{
  [[case]] 0:
  [[case]] 0:

Revision as of 16:52, 7 February 2021

Hover & click on the images for description

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