Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗dtOpVlInr 66 of 113 menu
◀ ▶

Введение в класс-значение в Dart

Класс-значение - тип, который держит набор связанных полей: заголовок и число лайков записи, координаты точки, код товара и цена. Такие значения передают между функциями, кладут в списки и карты, сравнивают между собой, не меняя исходный объект.

Обычный class Post с полями в конструкторе уже знаком по разделу про классы и поля. Для двух экземпляров с одинаковыми полями оператор == без своей реализации сравнивает ссылки, а вывод в консоль не показывает поля, пока не написать toString вручную. Для записей-контейнеров это лишняя работа на каждый тип.

Класс-значение задают явно: поля делают final, конструктор часто помечают const, а методы toString, operator ==, hashCode и copyWith пишут сами - в Dart ничего из этого не генерируется автоматически. Если у значения нет методов, кроме доступа к полям, в языке уже есть запись из раздела для начинающих - ее достаточно.

После создания объект ведет себя как контейнер данных: поля доступны по точке, лишней логики в типе нет. Класс-значение не заменяет иерархии с наследованием и абстрактные классы - он дополняет их там, где важнее содержимое полей, чем поведение отдельного типа.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить