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.