breakOut: Difference between revisions
Jump to navigation
Jump to search
Lou Montana (talk | contribs) m (Text replacement - "\{\{( *)Informative( *)\|" to "{{$1Feature$2|$2Informative$2|") |
Lou Montana (talk | contribs) m (Text replacement - "\{\{( *)Important( *)\|" to "{{$1Feature$2|$2important$2|") |
||
Line 8: | Line 8: | ||
| Breaks the code execution out of scope {} named ''name''. [[nil]] is returned. Scope name can be assigned using [[scopeName]] command. | | Breaks the code execution out of scope {} named ''name''. [[nil]] is returned. Scope name can be assigned using [[scopeName]] command. | ||
{{ | {{Feature|important|An unknown [[scopeName]] name will cause the script error {{Inline code|Generic error in expression}}}} | ||
{{Feature|Informative|An empty [[scopeName]] name will immediately leave the current scope}} | {{Feature|Informative|An empty [[scopeName]] name will immediately leave the current scope}} | ||
<br><br> | <br><br> |
Revision as of 02:08, 7 February 2021
Description
- Description:
- Description needed
- Groups:
- Program Flow
Syntax
- Syntax:
- Syntax needed
- Parameters:
- name: String - name of the scope (previously set with scopeName)
- Return Value:
- Return value needed
Alternative Syntax
- Syntax:
- value breakOut name Template:Since
- 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
- 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 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.