for forspec: Difference between revisions
Jump to navigation
Jump to search
m (note) |
Killzone Kid (talk | contribs) (use of private keyword) |
||
Line 7: | Line 7: | ||
____________________________________________________________________________________________ | ____________________________________________________________________________________________ | ||
| Creates cycle, using C like style. See example. | | 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 | |||
____________________________________________________________________________________________ | ____________________________________________________________________________________________ | ||
Line 17: | Line 19: | ||
|x2 = <code> _a = 0; '''for''' [{},{_a <= 10},{_a = _a + 1}] [[do]] {[[debugLog]] _a;}; </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> | |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 | | [[Control Structures]], [[for do]], [[while]] |= See also |
Revision as of 22:07, 4 December 2015
Description
- Description:
- Creates cycle, using C like style. See example.
In Arma 3 use private keyword when defining any variables for the scope, see example 4. - Groups:
- Uncategorised
Syntax
Examples
- Example 1:
for [{_x= 1},{_x <= 10},{_x = _x + 1}] do {debugLog _x;}
- Example 2:
_a = 0; for [{},{_a <= 10},{_a = _a + 1}] do {debugLog _a;};
- Example 3:
for [{_a = 0; _b = 1},{_a <= 10},{_a = _a + 1; _b = _b + _b}] do {}; //_a = 11; _b = 2048;
- Example 4:
// 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
Additional Information
- See also:
- Control Structuresfor dowhile
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 Apr 15, 2014 - 12:54
- ffur2007slx2_5
-
- 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.
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
- Never try to tell a decimal number via binary number in a loop; otherwise the loop will be infinite:
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.
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.
for [{_a = 2; _b = 1;},{_a < 100},{_a = _a + 1}] do {_b = _b * _a}; // _b = 1.#INF