Sobes.tech
Junior

Ako sa vykonáva porovnanie pomocou operátora identical v Dart?

sobes.tech AI

Odpoveď od AI

Funkcia identical(a, b) v Dart vracia true, ak jej argumenty a a btotožný objekt v pamäti. Inak vracia false.

Toto sa líši od použitia operátora ==, ktorý môže byť prepísaný triedami na určenie logickej rovnosti, nie identity objektov.

Príklady:

// Objekt A
var list1 = [1, 2, 3];
// Objekt B (iný objekt v pamäti)
var list2 = [1, 2, 3];

print(identical(list1, list2)); // false (rôzne objekty)
print(list1 == list2);         // true (logicky rovnaké, ak List prepíše ==)

// Objekt C, odkaz na ten istý objekt ako list1
var list3 = list1;

print(identical(list1, list3)); // true (odkazujú na ten istý objekt)

Pre primitívne typy (čísla, reťazce, boolean, null), ktoré sú nemenné, sa operátor identical často správa rovnako ako ==, pretože Dart môže cache-ovať alebo znovu používať inštancie nemenných hodnôt.

var a = 10;
var b = 10;
print(identical(a, b)); // true (pravdepodobne Dart používa rovnakú inštanciu pre hodnotu 10)

var s1 = "hello";
var s2 = "hello";
print(identical(s1, s2)); // true (Dart cache-uje literály reťazcov)

Hlavné použitie identical je overiť, či odkaz ukazuje presne na ten istý inštanciu objektu, čo je užitočné pri optimalizáciách, cache-ovaní alebo práci s nemennými objektmi.