for forspec: Difference between revisions

From Bohemia Interactive Community
Jump to navigation Jump to search
m (example format)
m (note)
Line 27: Line 27:
<dd class="notedate">Posted on Apr 15, 2014 - 12:54
<dd class="notedate">Posted on Apr 15, 2014 - 12:54
<dt class="note">'''[[User:ffur2007slx2_5|ffur2007slx2_5]]'''<dd class="note">
<dt class="note">'''[[User:ffur2007slx2_5|ffur2007slx2_5]]'''<dd class="note">
*In ArmA3 ver 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.
 
*{{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"
{| class="wikitable sortable"



Revision as of 18:26, 30 September 2014

-wrong parameter ("Arma") defined!-1.00
Hover & click on the images for description

Description

Description:
Creates cycle, using C like style. See example.
Groups:
Uncategorised

Syntax

Syntax:
for forspec
Parameters:
forspec: Array
Return Value:
For Type

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;

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
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

Bottom Section