Sobes.tech
Junior

Dart-da identical operatoru ilə müqayisə necə həyata keçirilir?

sobes.tech Süni İntellekt

AI-dan cavab

Dart-da identical(a, b) funksiyası onun argumentlari ab eyni obyektdirsə, true qaytarır. Əks halda, false qaytarır.

Bu, == operatorundan fərqlidir; == sinflər tərəfindən logiki bərabərliyi müəyyən etmək üçün yenidən təyin oluna bilər, obyektlərin identifikasiyasından yox.

Nümunələr:

// Ob'ekt A
var list1 = [1, 2, 3];
// Ob'ekt B (başqa obyekt)
var list2 = [1, 2, 3];

print(identical(list1, list2)); // false (fərqli obyektlər)
print(list1 == list2);         // true (əgər List == yenidən təyin olunubsa, məntiqi bərabər)

// Ob'ekt C, list1 ilə eyni obyektə istinad
var list3 = list1;

print(identical(list1, list3)); // true (eyni obyektə istinad edir)

Dəyişməz (immutable) primitiv tiplər üçün (saylar, sətirlər, booleanlər, null), identical çox vaxt == kimi davranır, çünki Dart dəyişməz dəyərlərin nümunələrini yaddaşa yığa və ya təkrar istifadə edə bilər.

var a = 10;
var b = 10;
print(identical(a, b)); // true (Dart ehtimal ki, 10 üçün eyni nümunəni istifadə edir)

var s1 = "hello";
var s2 = "hello";
print(identical(s1, s2)); // true (Dart sətir literal'larını yadda saxlayır)

identical-in əsas istifadəsi, referansın dəqiq olaraq eyni obyekt nümunəsinə işarə etdiyini yoxlamaqdır, bu isə optimallaşdırma, cache və ya dəyişməz obyektlərlə işləmək üçün faydalıdır.