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

Класс-значение в карте в Dart

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

class Post { final String title; final int likes; const Post(this.title, this.likes); @override String toString() => "Post($title, $likes)"; }

Поместим объекты в карту:

var byId = { 1: Post("Ann", 25), 2: Post("Bob", 30), }; print(byId[1]?.title);

Доступ по ключу возвращает nullable-ссылку: если ключа нет, результат null. Поля записи читают оператором ?. или после проверки на null:

class Config { final String host; final int port; Config(this.host, this.port); @override String toString() => "Config($host, $port)"; }

Поместим объекты в карту:

var env = {"prod": Config("api.app", 443)}; var cfg = env["prod"]; if (cfg != null) { print(cfg.port); }

Карту можно обойти в цикле: на каждой паре key и value значение уже имеет тип класса-значения и печатается или сравнивается как отдельный объект:

class Stats { final int views; final int likes; Stats(this.views, this.likes); @override String toString() => "Stats($views, $likes)"; }

Поместим объекты в карту:

var pages = { "home": Stats(100, 4), "blog": Stats(50, 2), }; for (var entry in pages.entries) { print("${entry.key} ${entry.value.views}"); }

Сделайте класс Phone с полями model и year. Дана карта:

var stock = { "p1": Phone("X1", 2022), "p2": Phone("Y2", 2024), };

Выведите на экран модель телефона с ключом "p2" из карты stock.

Сделайте класс Limit с полями max и used. Соберите карту из двух ключей "free" и "pro" с разными лимитами. Выведите на экран значение used для тарифа "free".

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