+: Difference between revisions

From Bohemia Interactive Community
Jump to navigation Jump to search
m (Text replacement - "<tt>([^= ]+)<\/tt>" to "{{hl|$1}}")
m (Some wiki formatting)
Line 83: Line 83:
|r6= [[HashMap]] - A new instance of the provided [[HashMap]] filled with the same key-value pairs ({{Wikipedia|Object copying#Deep copy|deep copy}})
|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 {{cc|returns  8}}
|x1= <sqf>
-5 [[+]] -3 {{cc|returns -8}}</code>  
 5 +  3 // returns  8
-5 + -3 // returns -8
</sqf>


|x2= <code>[[+]] 2 {{cc|returns  2}}
|x2= <sqf>
[[+]] -7 {{cc|returns -7}}</code>  
+  2 // returns  2
+ -7 // returns -7
</sqf>


|x3= <code>_arrayA = [1,2,3];
|x3= <sqf>
_arrayA = [1,2,3];
_arrayB = [3,4,5];
_arrayB = [3,4,5];
_arrayAB = _arrayA + _arrayB; {{cc|_arrayAB {{=}} [1,2,3,3,4,5]}}
_arrayAB = _arrayA + _arrayB; // _arrayAB = [1,2,3,3,4,5]
{{cc|_arrayA and _arrayB remain unchanged}}</code>  
// _arrayA and _arrayB remain unchanged
</sqf>


|x4= <code>_result = "Hello" + " " + "there"; {{cc|"Hello there"}}</code>  
|x4= <sqf>_result = "Hello" + " " + "there"; // "Hello there"</sqf>


|x5= <code>_arrayA = [1,2,3];
|x5= <sqf>
_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]; // _arrayA = [1,2,3], _arrayB = [99,2,3]
</sqf>


|x6= Shallow copy with {{hl|ARRAY + []}}:
|x6= Shallow copy with {{hl|ARRAY + []}}:
<code>[[private]] _subArray = [1, 2, 3];
<sqf>
[[private]] _array1 = [_subArray, 1, 2, 3];
private _subArray = [1, 2, 3];
[[private]] _array2 = _array1 + [];
private _array1 = [_subArray, 1, 2, 3];
_array2 [[select]] 0 [[set]] [0, "oops"];
private _array2 = _array1 + [];
[[hint]] [[str]] _subArray; {{cc|["oops", 2, 3]}}</code>
_array2 select 0 set [0, "oops"];
hint str _subArray; // ["oops", 2, 3]
</sqf>


Deep copy with {{hl|+ ARRAY}}:
Deep copy with {{hl|+ ARRAY}}:
<code>[[private]] _subArray = [1, 2, 3];
<sqf>
[[private]] _array1 = [_subArray, 1, 2, 3];
private _subArray = [1, 2, 3];
[[private]] _array2 = + _array1;
private _array1 = [_subArray, 1, 2, 3];
_array2 [[select]] 0 [[set]] [0, "oops"];
private _array2 = + _array1;
[[hint]] [[str]] _subArray; {{cc|[1, 2, 3]}}</code>  
_array2 select 0 set [0, "oops"];
hint str _subArray; // [1, 2, 3]
</sqf>


|seealso= [[Operators]] [[pushBack]] [[append]] [[merge]]
|seealso= [[Operators]] [[pushBack]] [[append]] [[merge]]
}}
}}

Revision as of 15:34, 10 May 2022

Hover & click on the images for description

Description

Description:
Add two Numbers, concatenate two Arrays or two Strings, or create a copy of an Array or HashMap.
Array copy methods ARRAY + [] and + ARRAY have different behaviours:
  • ARRAY + [] creates copy of the 1st dimension, but preserves references in other dimensions (shallow copy).
  • + ARRAY clones every element, so if the array is multi-dimensional, the created copy contains no references (deep copy).
See Example 6.
Groups:
MathArraysHashMapStrings

Syntax 1

Syntax:
numberA + numberB
Parameters:
numberA: Number
numberB: Number
Return Value:
Number - The sum of numberA and numberB

Syntax 2

Syntax:
+ number
Parameters:
number: Number
Return Value:
Number - The value of the parameter number

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
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

See also:
Operators pushBack append merge

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