forEach: Difference between revisions

From Bohemia Interactive Community
Jump to navigation Jump to search
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 19: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 or on the Forums.
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