forEach: Difference between revisions

From Bohemia Interactive Community
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 08: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.
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