+: Difference between revisions
Jump to navigation
Jump to search
(added +hashmap) |
m (Some cleanup, added HashMap group) |
||
Line 28: | Line 28: | ||
|gr2= Arrays | |gr2= Arrays | ||
|gr3= | |gr3= HashMap | ||
| | |gr4= Strings | ||
{{Feature | Warning | [[Array]] copy methods <tt>ARRAY + []</tt> and <tt>+ARRAY</tt> have different behaviours: | |descr= Add two [[Number]]s, concatenate two [[Array]]s or two [[String]]s, or create a copy of an Array or [[HashMap]]. | ||
{{Feature | Warning | [[Array]] copy methods <tt>ARRAY + []</tt> and <tt>+ ARRAY</tt> have different behaviours: | |||
* <tt>ARRAY + []</tt> creates copy of the 1st dimension, but preserves references in other dimensions ({{Wikipedia|Object copying#Shallow copy|shallow copy}}). | * <tt>ARRAY + []</tt> creates copy of the 1st dimension, but preserves references in other dimensions ({{Wikipedia|Object copying#Shallow copy|shallow copy}}). | ||
* <tt>+ARRAY</tt> clones every element, so if the array is multi-dimensional, the created copy contains no references ({{Wikipedia|Object copying#Deep copy|deep copy}}). | * <tt>+ ARRAY</tt> clones every element, so if the array is multi-dimensional, the created copy contains no references ({{Wikipedia|Object copying#Deep copy|deep copy}}). | ||
See [[#Example_6|Example 6]].}} | See [[#Example_6|Example 6]].}} | ||
Line 45: | Line 47: | ||
|r1= [[Number]] - The sum of ''numberA'' and ''numberB'' | |r1= [[Number]] - The sum of ''numberA'' and ''numberB'' | ||
|s2= [[+]] | |s2= [[+]] number | ||
|p21= | |p21= number: [[Number]] | ||
|r2= [[Number]] - | |r2= [[Number]] - The value of the parameter ''number'' | ||
|s3= arrayA [[+]] arrayB | |s3= arrayA [[+]] arrayB | ||
Line 67: | Line 69: | ||
|r4= [[String]] - a string concatenating ''stringA'' and ''stringB'' | |r4= [[String]] - a string concatenating ''stringA'' and ''stringB'' | ||
|s5= [[+]] | |s5= [[+]] array | ||
|p81= | |p81= array: [[Array]] | ||
|r5= [[Array]] - A new instance of array filled with same | |r5= [[Array]] - A new instance of the provided array filled with same elements ({{Wikipedia|Object copying#Deep copy|deep copy}}) | ||
|s6= [[+]] hashMap {{Since|arma3|2.04|y}} | |s6= [[+]] hashMap {{Since|arma3|2.04|y}} | ||
Line 77: | Line 79: | ||
|p101= hashMap: [[HashMap]] | |p101= hashMap: [[HashMap]] | ||
|r6= [[HashMap]] - A new instance of the provided [[HashMap]] filled with | |r6= [[HashMap]] - A new instance of the provided [[HashMap]] filled with the same key-value pairs ({{Wikipedia|Object copying#Deep copy|deep copy}}) | ||
|x1= <code> 5 [[+]] 3 | |x1= <code> 5 [[+]] 3 {{cc|returns 8}} | ||
-5 [[+]] -3 | -5 [[+]] -3 {{cc|returns -8}}</code> | ||
|x2= <code>[[+]] 2 | |x2= <code>[[+]] 2 {{cc|returns 2}} | ||
[[+]] -7 | [[+]] -7 {{cc|returns -7}}</code> | ||
|x3= <code>_arrayA = [1,2,3]; | |x3= <code>_arrayA = [1,2,3]; | ||
Line 93: | Line 95: | ||
|x5= <code>_arrayA = [1,2,3]; | |x5= <code>_arrayA = [1,2,3]; | ||
_arrayB = +_arrayA; | _arrayB = + _arrayA; | ||
_arrayB [[set]] [0, 99]; {{cc|_arrayA = [1,2,3], _arrayB {{=}} [99,2,3]}}</code> | _arrayB [[set]] [0, 99]; {{cc|_arrayA {{=}} [1,2,3], _arrayB {{=}} [99,2,3]}}</code> | ||
|x6= Shallow copy with <tt>ARRAY + []</tt>: | |x6= Shallow copy with <tt>ARRAY + []</tt>: | ||
<code>[[private]] _subArray | <code>[[private]] _subArray = [1, 2, 3]; | ||
[[private]] _array1 | [[private]] _array1 = [_subArray, 1, 2, 3]; | ||
[[private]] _array2 | [[private]] _array2 = _array1 + []; | ||
_array2 [[select]] 0 [[set]] [0, "oops"]; | _array2 [[select]] 0 [[set]] [0, "oops"]; | ||
[[hint]] [[str]] _subArray; {{cc|["oops", 2, 3]}}</code> | [[hint]] [[str]] _subArray; {{cc|["oops", 2, 3]}}</code> | ||
Deep copy with <tt>+ARRAY</tt>: | Deep copy with <tt>+ ARRAY</tt>: | ||
<code>[[private]] _subArray | <code>[[private]] _subArray = [1, 2, 3]; | ||
[[private]] _array1 | [[private]] _array1 = [_subArray, 1, 2, 3]; | ||
[[private]] _array2 | [[private]] _array2 = + _array1; | ||
_array2 [[select]] 0 [[set]] [0, "oops"]; | _array2 [[select]] 0 [[set]] [0, "oops"]; | ||
[[hint]] [[str]] _subArray; {{cc|[1, 2, 3]}}</code> | [[hint]] [[str]] _subArray; {{cc|[1, 2, 3]}}</code> | ||
|seealso= [[Operators]] | |seealso= [[Operators]] [[pushBack]] [[append]] [[merge]] | ||
}} | }} | ||
Revision as of 12:38, 10 June 2021
Description
- Description:
- Add two Numbers, concatenate two Arrays or two Strings, or create a copy of an Array or HashMap.
- Groups:
- MathArraysHashMapStrings
Syntax 1
- Syntax:
- numberA + numberB
- Parameters:
- numberA: Number
- numberB: Number
- Return Value:
- Number - The sum of numberA and numberB
Syntax 2
Syntax 3
- Syntax:
- arrayA + arrayB
- Parameters:
- arrayA: Array
- arrayB: Array
- Return Value:
- Array - A new array filled with arrayA and arrayB elements, in that order
Syntax 4
- Syntax:
- stringA + stringB
- Parameters:
- stringA: String
- stringB: String
- Return Value:
- String - a string concatenating stringA and stringB
Syntax 5
- Syntax:
- + array
- Parameters:
- array: Array
- Return Value:
- Array - A new instance of the provided array filled with same elements (deep copy)
Syntax 6
- Syntax:
- + hashMap Template:Since
- Parameters:
- hashMap: HashMap
- Return Value:
- HashMap - A new instance of the provided HashMap filled with the same key-value pairs (deep copy)
Examples
- Example 1:
5 + 3 // returns 8 -5 + -3 // returns -8
- Example 2:
+ 2 // returns 2 + -7 // returns -7
- Example 3:
_arrayA = [1,2,3]; _arrayB = [3,4,5]; _arrayAB = _arrayA + _arrayB; // _arrayAB = [1,2,3,3,4,5] // _arrayA and _arrayB remain unchanged
- Example 4:
_result = "Hello" + " " + "there"; // "Hello there"
- Example 5:
_arrayA = [1,2,3]; _arrayB = + _arrayA; _arrayB set [0, 99]; // _arrayA = [1,2,3], _arrayB = [99,2,3]
- Example 6:
- Shallow copy with ARRAY + []:
private _subArray = [1, 2, 3]; private _array1 = [_subArray, 1, 2, 3]; private _array2 = _array1 + []; _array2 select 0 set [0, "oops"]; hint str _subArray; // ["oops", 2, 3]
Deep copy with + ARRAY:private _subArray = [1, 2, 3]; private _array1 = [_subArray, 1, 2, 3]; private _array2 = + _array1; _array2 select 0 set [0, "oops"]; hint str _subArray; // [1, 2, 3]
Additional Information
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
Categories:
- Scripting Commands
- Introduced with Operation Flashpoint version 1.00
- Operation Flashpoint: New Scripting Commands
- Operation Flashpoint: Scripting Commands
- Operation Flashpoint: Elite: Scripting Commands
- ArmA: Armed Assault: Scripting Commands
- Arma 2: Scripting Commands
- Arma 2: Operation Arrowhead: Scripting Commands
- Take On Helicopters: Scripting Commands
- Arma 3: Scripting Commands
- Command Group: Math
- Command Group: Arrays
- Command Group: HashMap
- Command Group: Strings