isEqualTo: Difference between revisions
Jump to navigation
Jump to search
Lou Montana (talk | contribs) m (Text replacement - "<code>([^<]*)\[\[([a-zA-Z][a-zA-Z0-9_]+)\]\]([^<]*) *<\/code>" to "<code>$1$2$3</code>") |
Lou Montana (talk | contribs) m (Some wiki formatting) |
||
(10 intermediate revisions by 3 users not shown) | |||
Line 10: | Line 10: | ||
* It performs case sensitive comparison on [[String]]s | * It performs case sensitive comparison on [[String]]s | ||
* It doesn't throw error when comparing different types, i.e. ("eleven" [[isEqualTo]] 11) | * It doesn't throw error when comparing different types, i.e. ("eleven" [[isEqualTo]] 11) | ||
* It can compare [[Array]]s, [[Script]]s and [[Boolean]]s ([[alive]] [[player]] [[isEqualTo]] [[true]]) | * It can compare [[Array]]s, [[Script Handle]]s and [[Boolean]]s ([[alive]] [[player]] [[isEqualTo]] [[true]]) | ||
* It can compare non-existent game objects ([[grpNull]] [[isEqualTo]] [[grpNull]]) | * It can compare non-existent game objects ([[grpNull]] [[isEqualTo]] [[grpNull]]) | ||
* It is slightly faster than [[==]], especially when comparing [[String]]s | |||
* It is slightly faster than [[==]], especially when comparing [[String]]s {{Feature | | * {{GVI|arma3|1.48|size= 0.75}} It can compare [[Namespace]]s | ||
< | |||
{{Feature | | {{Feature|informative|A compiled code is not equal to the same compiled code made final: <sqf>_a = compile "123"; _b = compileFinal "123"; _a isEqualTo _b; // false</sqf>}} | ||
< | {{Feature|warning|When comparing [[Array]]s, if an array contains [[nil]] element, the comparison will return [[false]]. For example:<br> | ||
private _array2 | <sqf> | ||
_array1 isEqualTo _array2 // false</ | private _array1 = [1, nil, 2]; | ||
private _array2 = [1, nil, 2]; | |||
_array1 isEqualTo _array2; // false | |||
</sqf> | |||
<u>UNLESS</u> the compared arrays are the same array: | <u>UNLESS</u> the compared arrays are the same array: | ||
< | <sqf> | ||
private _array2 | private _array1 = [1, nil, 2]; | ||
_array1 isEqualTo _array2 // true</ | private _array2 = _array1; | ||
See: [[BIS_fnc_areEqual]] vs | _array1 isEqualTo _array2; // true | ||
</sqf> | |||
See: [[isEqualRef]] and [[BIS_fnc_areEqual]] vs [[BIS_fnc_areEqualNotNil]] | |||
}} | |||
|s1= val1 [[isEqualTo]] | |s1= val1 [[isEqualTo]] val2 | ||
|p1= val1: [[Anything]] | |p1= val1: [[Anything]] | ||
Line 33: | Line 39: | ||
|r1= [[Boolean]] | |r1= [[Boolean]] | ||
|x1= < | |x1= <sqf> | ||
_arr2 = [1,[2,[3]]]; | _arr1 = [1, [2, [3]]]; | ||
if (_arr1 isEqualTo _arr2) then {hint "Arrays match!"}</ | _arr2 = [1, [2, [3]]]; | ||
if (_arr1 isEqualTo _arr2) then { hint "Arrays match!" }; | |||
</sqf> | |||
|x2= < | |x2= <sqf> | ||
if !(a isEqualTo b) then {hint "a is not equal to b"};</ | if (a isEqualTo b) then { hint "a is equal to b" }; | ||
if !(a isEqualTo b) then { hint "a is not equal to b" }; | |||
</sqf> | |||
|seealso= [[isNotEqualTo]] [[isEqualTypeAll]] [[isEqualTypeAny]] [[isEqualType]] [[isEqualTypeParams]] [[isEqualTypeArray]] [[a == b]] [[Operators]] | |seealso= [[isNotEqualTo]] [[isEqualRef]] [[isEqualTypeAll]] [[isEqualTypeAny]] [[isEqualType]] [[isEqualTypeParams]] [[isEqualTypeArray]] [[a == b]] [[Operators]] | ||
}} | }} | ||
{{Note | |||
|user= Tajin | |||
|datetime= 20141203131100 | |||
|text= Simply put, "isEqualTo" is a binary comparison. Therefor it is very fast but only accepts '''100%''' identical matches. In some other languages this is known as "===" instead of "==". | |||
}} | |||
{{Note | |||
|user= Dedmen | |||
|datetime= 20161103023900 | |||
|text= When comparing with nil result is [[Nothing]]. | |||
<sqf>nil isEqualTo player;</sqf> | |||
When comparing with nil result is [[Nothing]]. | |||
< | |||
Returns [[Nothing]] instead of expected [[false]] | Returns [[Nothing]] instead of expected [[false]] | ||
< | <sqf>diag_log [nil isEqualTo player];</sqf> | ||
Will print {{hl|[bool]}} | Will print {{hl|[bool]}} | ||
}} | |||
Latest revision as of 10:01, 29 December 2022
Description
- Description:
- Performs strict comparison between var1 and var2 and returns true if equal, otherwise false. Strict means that it would check that both arguments are of the same data type and then compare the values.
Some differences between isEqualTo and ==:- It performs case sensitive comparison on Strings
- It doesn't throw error when comparing different types, i.e. ("eleven" isEqualTo 11)
- It can compare Arrays, Script Handles and Booleans (alive player isEqualTo true)
- It can compare non-existent game objects (grpNull isEqualTo grpNull)
- It is slightly faster than ==, especially when comparing Strings
- 1.48 It can compare Namespaces
- Groups:
- Variables
Syntax
Examples
- Example 1:
- Example 2:
Additional Information
- See also:
- isNotEqualTo isEqualRef isEqualTypeAll isEqualTypeAny isEqualType isEqualTypeParams isEqualTypeArray a == b Operators
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
- Date unknown
- Simply put, "isEqualTo" is a binary comparison. Therefor it is very fast but only accepts 100% identical matches. In some other languages this is known as "===" instead of "==".