breakOut: Difference between revisions
Jump to navigation
Jump to search
m (Bot: Reverted to revision 91575 by Polaris_bi_wiki on 2015-08-27T16:37:34Z) |
m (template:command argument fix) |
||
Line 10: | Line 10: | ||
<br><br> | <br><br> | ||
Since Arma 3 v1.47, [[breakOut]] can be used to return a ''value''. It is the closest SQF comes to having "return" like operation. |= | Since Arma 3 v1.47, [[breakOut]] can be used to return a ''value''. It is the closest SQF comes to having "return" like operation. |DESCRIPTION= | ||
____________________________________________________________________________________________ | ____________________________________________________________________________________________ | ||
| '''breakOut''' name |= | | '''breakOut''' name |SYNTAX= | ||
|p1= name: [[String]] - name of the scope (previously set with [[scopeName]]) |= | |p1= name: [[String]] - name of the scope (previously set with [[scopeName]]) |PARAMETER1= | ||
| [[Nothing]] |= | | [[Nothing]] |RETURNVALUE= | ||
| s2= value '''breakOut''' name (''since Arma 3 v1.47'') |= | | s2= value '''breakOut''' name (''since Arma 3 v1.47'') |SYNTAX= | ||
|p21= value: [[Anything]] - a value to return |= | |p21= value: [[Anything]] - a value to return |PARAMETER1= | ||
|p22= name: [[String]] - name of the scope (previously set with [[scopeName]]) |= | |p22= name: [[String]] - name of the scope (previously set with [[scopeName]]) |PARAMETER1= | ||
| r2= [[Anything]] |= | | r2= [[Anything]] |RETURNVALUE= | ||
|x1= <code>[[scopeName]] "main"; | |x1= <code>[[scopeName]] "main"; | ||
Line 37: | Line 37: | ||
[[sleep]] 1; | [[sleep]] 1; | ||
}; | }; | ||
</code> |= | </code> |EXAMPLE1= | ||
|x2= <code>[[call]] { | |x2= <code>[[call]] { | ||
Line 45: | Line 45: | ||
}; | }; | ||
345 | 345 | ||
}; // call returns 123</code> |= | }; // call returns 123</code> |EXAMPLE2= | ||
____________________________________________________________________________________________ | ____________________________________________________________________________________________ | ||
| [[scopeName]], [[breakTo]], [[exitWith]] |= | | [[scopeName]], [[breakTo]], [[exitWith]] |SEEALSO= | ||
}} | }} |
Revision as of 14:34, 7 April 2019
Description
- Description:
- Breaks the code execution out of scope {} named name. nil is returned. Scope name can be assigned using scopeName command.
Since Arma 3 v1.47, breakOut can be used to return a value. It is the closest SQF comes to having "return" like operation. - Groups:
- Uncategorised
Syntax
- Syntax:
- breakOut name
- Parameters:
- name: String - name of the scope (previously set with scopeName)
- Return Value:
- Nothing
Alternative Syntax
- Syntax:
- value breakOut name (since Arma 3 v1.47)
- Parameters:
- value: Anything - a value to return
- name: String - name of the scope (previously set with scopeName)
- Return Value:
- Anything
Examples
- Example 1:
scopeName "main"; while {true} do { scopeName "loop1"; while {true} do { scopeName "loop2"; if (condition1) then {breakTo "main"}; // Breaks all scopes and return to "main" if (condition2) then {breakOut "loop2"}; // Breaks scope named "loop2" sleep 1; }; sleep 1; };
- Example 2:
call { scopeName "main"; call { 123 breakOut "main" }; 345 }; // call returns 123
Additional Information
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
- Posted on 19 Aug, 2008
- alef
-
When "name" is nil, the command is ignored.
When "name" is an undefined scope name or "", the script quits current scope.if (true) then { hint "1"; breakOut nil; hint "2"; }; //result "2" if (true) then { hint "1"; breakOut ""; hint "2"; }; //result "1" if (true) then { hint "1"; breakOut "dskfhdsklfh"; hint "2"; }; //result "1"
Bottom Section
- Posted on August 27, 2015 - 16:09 (UTC)
- Polaris
-
breakOut can still be used if multiple scopes share identical names. It will simply break out of the nearest scope that matches the name parameter you've used. For example:
call { scopeName "Main"; //Parent Main call { scopeName "Main"; //Child Main "String" breakOut "Main"; //Will break out of child main and return "String" to parent main }; };
Therefore you are able to consistently reuse scope names such as "Main", "Child", "Primary", "Secondary", etc throughout functions without worrying about having to ensure you create unique names for each scope.