Sobes.tech
Junior

Cum se face comparația folosind operatorul identical în Dart?

sobes.tech AI

Răspuns de la AI

Funcția identical(a, b) în Dart returnează true dacă argumentele a și b sunt același obiect în memorie. În caz contrar, returnează false.

Aceasta diferă de utilizarea operatorului ==, care poate fi redefinit de către clase pentru a determina egalitatea logică, mai degrabă decât identitatea obiectelor.

Exemple:

// Obiectul A
var list1 = [1, 2, 3];
// Obiectul B (alt obiect în memorie)
var list2 = [1, 2, 3];

print(identical(list1, list2)); // false (obiecte diferite)
print(list1 == list2);         // true (logic egal dacă List redefinește ==)

// Obiectul C, referință la același obiect ca și list1
var list3 = list1;

print(identical(list1, list3)); // true (se referă la același obiect)

Pentru tipurile primitive (numere, șiruri, booleeni, null), care sunt imutabile, operatorul identical se comportă adesea ca și ==, deoarece Dart poate face cache sau reutiliza instanțe de valori imutabile.

var a = 10;
var b = 10;
print(identical(a, b)); // true (probabil Dart folosește aceeași instanță pentru valoarea 10)

var s1 = "hello";
var s2 = "hello";
print(identical(s1, s2)); // true (Dart cachează literalurile de șiruri)

Utilizarea principală a identical este de a verifica dacă o referință indică exact aceeași instanță de obiect, ceea ce este util în optimizări, cache-uri sau lucrul cu obiecte imutabile.