Sobes.tech
Junior

Hogyan történik az összehasonlítás az identical operátor használatával Dartban?

sobes.tech MI

Válasz az MI-től

A identical(a, b) függvény Dartban akkor ad vissza true értéket, ha argumentumai a és b pont ugyanarra az objektumra mutatnak a memóriában. Ellenkező esetben false.

Ez eltér a == operátor használatától, amelyet osztályok felülírhatnak a logikai egyenlőség meghatározására, nem az objektumok identitására.

Példák:

// Objektum A
var list1 = [1, 2, 3];
// Objektum B (egy másik objektum a memóriában)
var list2 = [1, 2, 3];

print(identical(list1, list2)); // false (különböző objektumok)
print(list1 == list2);         // true (ha a List felülírja a ==-t)

// Objektum C, hivatkozás ugyanarra az objektumra, mint a list1
var list3 = list1;

print(identical(list1, list3)); // true (ugyanarra az objektumra mutatnak)

Az immutábilis (nem változtatható) primitív típusok (számok, sztringek, booleanok, null) esetén az identical gyakran ugyanúgy viselkedik, mint a ==, mivel Dart cache-eli vagy újrahasználja az immutábilis értékek példányait.

var a = 10;
var b = 10;
print(identical(a, b)); // true (valószínűleg ugyanazt a példányt használja Dart a 10 értékhez)

var s1 = "hello";
var s2 = "hello";
print(identical(s1, s2)); // true (Dart cache-eli a string literálokat)

Az identical fő felhasználási területe, hogy ellenőrizze, egy referencia pontosan ugyanarra az objektumpéldányra mutat-e, ami hasznos lehet optimalizálásnál, cache-elésnél vagy immutábilis objektumokkal való munkánál.