Sobes.tech
Junior

Kako se vrši poređenje korišćenjem operatora identical u Dart-u?

sobes.tech АИ

Одговор од АИ

Funkcija identical(a, b) u Dart-u vraća true ako su njeni argumenti a i b isti objekat u memoriji. U suprotnom, vraća false.

Ovo se razlikuje od korišćenja operatora ==, koji može biti redefinisan od strane klasa za određivanje logičke jednakosti, a ne identiteta objekata.

Primeri:

// Objekat A
var list1 = [1, 2, 3];
// Objekat B (drugi objekat u memoriji)
var list2 = [1, 2, 3];

print(identical(list1, list2)); // false (različiti objekti)
print(list1 == list2);         // true (logički jednaki ako List redefiniše ==)

// Objekat C, referenca na isti objekat kao i list1
var list3 = list1;

print(identical(list1, list3)); // true (referišu na isti objekat)

Za primitivne tipove (brojevi, stringovi, booleovi, null), koji su nemutabilni, operator identical često se ponaša isto kao ==, jer Dart može keširati ili ponovo koristiti instance nemutabilnih vrednosti.

var a = 10;
var b = 10;
print(identical(a, b)); // true (verovatno Dart koristi istu instancu za vrednost 10)

var s1 = "hello";
var s2 = "hello";
print(identical(s1, s2)); // true (Dart kešira string literal)

Glavna primena identical je provera da li referenca tačno ukazuje na istu instancu objekta, što je korisno kod optimizacija, keširanja ili rada sa nemutabilnim objektima.