|
|
Line 1: |
Line 1: |
| {{Command|= Comments
| | #REDIRECT [[for]] |
| ____________________________________________________________________________________________
| |
| | |
| | arma |= Game name
| |
| | |
| |1.00|= Game version
| |
| ____________________________________________________________________________________________
| |
| | |
| | Creates cycle, using C like style. See example.
| |
| | |
| <br><br>In Arma 3 use [[private]] keyword when defining any variables for the scope, see example 4. |= Description
| |
| ____________________________________________________________________________________________
| |
| | |
| | '''for''' forspec|= Syntax
| |
| |p1 = forspec: [[Array]]
| |
| | [[For Type]] |= Return value
| |
| ____________________________________________________________________________________________
| |
| |x1 = <code> '''for''' [{_x<nowiki>=</nowiki> 1},{_x <<nowiki>=</nowiki> 10},{_x <nowiki>=</nowiki> _x + 1}] [[do]] {[[debugLog]] _x;} </code>
| |
| |x2 = <code> _a = 0; '''for''' [{},{_a <= 10},{_a = _a + 1}] [[do]] {[[debugLog]] _a;}; </code>
| |
| |x3 = <code> '''for''' [{_a = 0; _b = 1},{_a <= 10},{_a = _a + 1; _b = _b + _b}] [[do]] {}; //_a = 11; _b = 2048;</code>
| |
| |x4 = <code>// BAD CODE
| |
| _i = 100;
| |
| [[for]] [{_i = 0}, {_i < 5}, {_i = _i + 1}] [[do]] {};
| |
| [[hint]] [[str]] _i; // 5
| |
| | |
| // GOOD CODE ([[private]] keyword is recommended)
| |
| _i = 100;
| |
| [[for]] [{[[private]] _i = 0}, {_i < 5}, {_i = _i + 1}] [[do]] {};
| |
| [[hint]] [[str]] _i; // 100</code> |=
| |
| | |
| | [[Control Structures]], [[for do]], [[while]] |= See also
| |
| | |
| }}
| |
| | |
| <h3 style="display:none">Notes</h3>
| |
| <dl class="command_description">
| |
| <!-- Note Section BEGIN -->
| |
| <dd class="notedate">Posted on Apr 15, 2014 - 12:54
| |
| <dt class="note">'''[[User:ffur2007slx2_5|ffur2007slx2_5]]'''<dd class="note">
| |
| | |
| *{{GVI|arma 3|1.16}} Please note the difference between [[for forspec]] and [[for do]], [[for forspec]] detects Boolean in each scope while [[for do]] doesn’t. e.g.
| |
| {| class="wikitable sortable"
| |
| | |
| ! command
| |
| ! Structure
| |
| ! Summary
| |
| | |
| |-
| |
| | [[for forspec]]
| |
| |
| |
| a = 0; b = [[true]];
| |
| [[for]] [{_i = 0},{_i < 10 && b},{_i = _i + 1}] [[do]] {
| |
| a = a + 1;
| |
| [[if]] (a >= 7) [[then]] {b = [[false]]}
| |
| }
| |
| | loop can be exited via Boolean control, possible workaround can be like [[BIS_fnc_areEqual]]
| |
| | |
| |-
| |
| | [[for do]]
| |
| |
| |
| a = 0;
| |
| [[for]] "_i" [[from]] 0 [[to]] 10 [[do]] {
| |
| a = a + 1;
| |
| [[if]] (a >= 7) [[exitwith]] {}
| |
| };
| |
| | have to be exited via [[exitWith]]
| |
| | |
| |}
| |
| <br>
| |
| *Never try to tell a decimal number via binary number in a loop; otherwise the loop will be infinite:
| |
| <code>
| |
| '''for''' [{_a = 0},{_a != 1},{_a = _a + 0.1}] [[do]] {}; //an infinite loop; _a will never be 1 so the scope will always be true.
| |
| </code>
| |
| Any binary number behind the decimal point is always the sum of 1/2, 1/4, 1/8, 1/16 etc. so decimal number with odd denominator like 1/3 or 1/10 cannot be exactly equal to each other.
| |
| *Avoid too large factorial multiply which may loose the leading indicator in result. And 12 is the biggest accessable factor in this example.
| |
| <code>'''for''' [{_a = 2; _b = 1;},{_a < 100},{_a = _a + 1}] [[do]] {_b = _b * _a}; // _b = 1.#INF</code>
| |
| <!-- Note Section END -->
| |
| </dl>
| |
| | |
| <h3 style="display:none">Bottom Section</h3>
| |
| [[Category:Scripting Commands|FORARRAY]]
| |
| [[Category:Scripting Commands ArmA|FORARRAY]]
| |
| [[Category:Command_Group:_Program_Flow|{{uc:{{PAGENAME}}}}]]
| |