Array comparision #37567
-
how come arrayNm==arrayGm is true?? I changed the index at 0 in arrayGm to -1 |
Beta Was this translation helpful? Give feedback.
Replies: 1 comment 1 reply
-
With If what's required is to create a copy of the array value, the We can use the exact equality ( import ballerina/io;
public function main() {
int[] a = [2, 3, 4, 5, 4];
int[] b = a;
io:println(a == b); // true
io:println(a === b); // true, since they both refer to the same value
b[0] = -1;
io:println(a == b); // true since `a` and `b` refer to the same value
int[] c = [2, 3, 4, 5, 4];
int[] d = c.clone(); // Assign a copy of the array value referred to by `c`
io:println(c == d); // true since the member values are the same
io:println(c === d); // false now since `d` refers to a clone of the value referred to by `c`
c[0] = 25;
io:println(c == d); // now false since `d` was referring to a clone of the value held by `c`
// and since `c` was updated, the member values in `c` and `d` are now different
} |
Beta Was this translation helpful? Give feedback.
With
int[] arrayGm = arrayNm;
arrayGm
refers to the same array value referred to byarrayNm
. Therefore, any change done to the array value viaarrayGm
happens on the same array value that is assigned toarrayNm
. So both variables refer to the same array value, which is why even after the change the equality check will result in true anyway.If what's required is to create a copy of the array value, the
lang.value:clone
langlib function (int[] arrayGm = arrayNm.clone();
) can be used.We can use the exact equality (
===
) check to check if the variables refer to the same value.