Сравнение объектов в Dart
Функция identical проверяет, указывают ли две переменные
на один и тот же объект в памяти. Разные экземпляры класса
даже с одинаковыми полями при identical не равны:
class Post {
String title;
int likes;
Post(this.title, this.likes);
}
Создадим объекты и выведем результат:
var a = Post("note", 21);
var b = Post("note", 21);
var c = a;
print(identical(a, b));
print(identical(a, c));
Оператор == у обычного класса без переопределения
сравнивает ссылки - результат совпадает с identical:
class Post {
String title;
Post(this.title);
}
Создадим объекты и выведем результат:
var a = Post("note");
var b = Post("note");
print(a == b);
print(identical(a, b));
Сравнивать «смысл» двух объектов по полям можно вручную - проверить каждое поле отдельно:
class Post {
String title;
int likes;
Post(this.title, this.likes);
}
Создадим объекты и выведем результат:
var a = Post("note", 21);
var b = Post("note", 21);
var sameData = a.title == b.title && a.likes == b.likes;
print(sameData);
Создайте два разных объекта Post с одинаковым заголовком.
Выведите результат identical для этих переменных.
Создайте объект Post и вторую переменную,
которой присвоите тот же объект.
Выведите результат identical.