forEach: Difference between revisions

From Bohemia Interactive Community
Jump to navigation Jump to search
No edit summary
m (note modified)
Line 21: Line 21:
|p2= array: [[Array]] |= Parameter 2
|p2= array: [[Array]] |= Parameter 2


| [[Nothing]] |= Return value
| Any |= Return value
____________________________________________________________________________________________
____________________________________________________________________________________________
   
   
Line 49: Line 49:
<dd class="note">
<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:
If arrays are used in forEach loops, _x uses them by reference, so any changes to _x will be applied to the original:
<pre>_arr1 = [1,2,3];
<code>_arr1 = [1,2,3];
_arr2 = [6,7,8];
_arr2 = [6,7,8];
{_x set [1,"x"]} forEach [_arr1,_arr2];</pre>
{_x [[set]] [1,"x"]} [[forEach]] [_arr1,_arr2];</code>
will change ''_arr1'' to ''[1,"x",3]'', and ''_arr2'' to ''[6,"x",8]''.
will change _arr1 to [1,"x",3], and _arr2 to [6,"x",8].
<!-- Note Section END -->
<!-- Note Section END -->
</dl>
</dl>
Line 71: Line 71:
<dt class="note">[[User:Fett Li|Fett Li]]</dt>
<dt class="note">[[User:Fett Li|Fett Li]]</dt>
<dd class="note">
<dd class="note">
It's not true that ''forEach'' has no return value.
[[forEach]] returns any (the last passed value will be the return value).
The last passed value of the ''forEach-loop'' will be the return value. For example:
<code>_var = {_x} [[forEach]] [1,2,3]; // _var will be 3.
 
_var = {_x} [[forEach]] {[[nil]],"s",[[objNull]],[[configFile]]}; // return bin\config.bin
<pre>_var = {_x} forEach [1,2,3];</pre>
</code>
 
_var will be 3.
 
You also can use ''if BOOL exitWith CODE'' to assign any return value.
</dd>
</dd>
</dl>
</dl>
<!-- DISCONTINUE Notes -->
<!-- DISCONTINUE Notes -->

Revision as of 09:54, 30 August 2014

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 the magic variable _x. The array indices are represented by _forEachIndex.
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 (only in Operation Flashpoint), Code (since Arma)
array: Array
Return Value:
Any

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:
setresizepushBackreverseselectinfindtoArraytoStringcount Control 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

Posted on August 29, 2014 - 22:23 (UTC)
Fett Li
forEach returns any (the last passed value will be the return value). _var = {_x} forEach [1,2,3]; // _var will be 3. _var = {_x} forEach {nil,"s",objNull,configFile}; // return bin\config.bin