forEach: Difference between revisions

From Bohemia Interactive Community
m (Spelling error)
(rm note re. performance, add. note re. arrays)
Line 7: Line 7:
____________________________________________________________________________________________
____________________________________________________________________________________________


| Executes the given command(s) on every item of an array. The array items are represented by _x. '''Plural commands are executed within one frame''', so this command might cause performance loss when used on very large arrays or with very complex commands.
| Executes the given command(s) on every item of an array. The array items are represented by _x.  
In ArmA2, the variable _x is always local to the foreach block so it is safe to nest foreach commands.
 
In ArmA2 & VBS2, the variable _x is always local to the forEach block so it is safe to nest them.
|= Description
|= Description
____________________________________________________________________________________________
____________________________________________________________________________________________
Line 21: Line 22:
____________________________________________________________________________________________
____________________________________________________________________________________________
   
   
|x1= <pre>{_x setdammage 1} forEach units group player</pre>
|x1= <pre>{_x setdammage 1} forEach units group player</pre> |= Example 1


|x2= This command can also easily be used to execute a single command multiple times without respect to the array items.
<pre>{player addMagazine "M16"} forEach [1,2,3,4]</pre> |= Example 2


This command can also easily be used to execute a single command multiple times without respect to the array items.
|x3= You can also use multiple commands in the same block.
 
<pre>{_x setCaptive true; removeAllWeapons _x; doStop _x;} forEach units group this</pre> |= Example 3
<pre>{player addMagazine "M16"} forEach [1,2,3,4]</pre> |= Example 1
 
|x2= You can also use multiple commands in the same block.
 
<pre>{_x setCaptive true; removeAllWeapons _x; doStop _x;} forEach units group this</pre> |= Example 2
____________________________________________________________________________________________
____________________________________________________________________________________________


Line 41: Line 39:
<!-- Note Section BEGIN -->
<!-- Note Section BEGIN -->


<dd class="notedate">Posted on July 20, 2010</dd>
<dt class="note">'''[[User:Kronzky|Kronzky]]'''</dt>
<dd class="note">
If arrays are used in forEach loops, _x uses them by reference, so any changes to _x will be applied to the original:
_arr1 = [1,2,3];
_arr2 = [6,7,8];
{_x set [1,"x"]} forEach [_arr1,_arr2];
will change _arr1 to [1,"x",3], and _arr2 to [6,"x",8].
</dd>
<!-- Note Section END -->
<!-- Note Section END -->
</dl>
</dl>

Revision as of 18:06, 20 July 2010

Hover & click on the images for description

Description

Description:
Executes the given command(s) on every item of an array. The array items are represented by _x. In ArmA2 & VBS2, the variable _x is always local to the forEach block so it is safe to nest them.
Groups:
Uncategorised

Syntax

Syntax:
command forEach array
Parameters:
command: String
array: Array
Return Value:
Nothing

Examples

Example 1:
{_x setdammage 1} forEach units group player
Example 2:
This command can also easily be used to execute a single command multiple times without respect to the array items.
{player addMagazine "M16"} forEach [1,2,3,4]
Example 3:
You can also use multiple commands in the same block.
{_x setCaptive true; removeAllWeapons _x; doStop _x;} forEach units group this

Additional Information

See also:
countControl Structures

Notes

Report bugs on the Feedback Tracker and/or discuss them on the Arma Discord.
Only post proven facts here! Add Note

Notes

Posted on July 20, 2010
Kronzky
If arrays are used in forEach loops, _x uses them by reference, so any changes to _x will be applied to the original: _arr1 = [1,2,3]; _arr2 = [6,7,8]; {_x set [1,"x"]} forEach [_arr1,_arr2]; will change _arr1 to [1,"x",3], and _arr2 to [6,"x",8].

Bottom Section