Dart Academy · Урок

Обобщённые коллекции на практике

Типизация List, Map и пользовательских контейнеров

Урок 4 из 413 шагов

«Обобщённые коллекции на практике» — бесплатный урок Dart Academy на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Dart Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Dart Academy содержит 4 уроков всего.

Коллекции являются обобщёнными

Все повседневные коллекции Dart являются обобщёнными. List, Set и Map принимают параметры типа, которые фиксируют содержимое коллекции. 📦

Типизация List

List принимает один параметр типа для своих элементов. Объявление List из String означает, что каждый элемент должен быть String.

List<String> names = ['Ada', 'Linus'];

Типизация Set

Set работает так же, но сохраняет уникальность элементов. Set из int содержит целые числа без повторений.

Set<int> ids = {1, 2, 2, 3};

Типизация Map

Map принимает два параметра типа: один для ключей и один для значений. Порядок важен: сначала указывается тип ключа.

Map<String, int> ages = {'Ada': 36};

Вывод типа из литералов

При записи литерала Dart часто выводит тип по его содержимому. Список чисел автоматически становится List из int.

var scores = [90, 85, 100];

Указывайте тип у пустых литералов

У пустого литерала нет содержимого, по которому можно вывести тип, поэтому укажите тип самостоятельно. Иначе Dart может выбрать не тот тип, который Вам нужен.

var queue = <String>[];

Типы элементов сохраняются

После типизации методы возвращают правильный тип элемента. Чтение из List из String даёт String, который можно использовать напрямую.

List<String> names = ['Ada'];
String first = names.first;

Вложенные обобщённые типы

Параметры типа можно вкладывать настолько глубоко, насколько необходимо. Map из String в List из int вполне допустим и полностью проверяется.

Map<String, List<int>> grades = {
  'Ada': [90, 85]
};

Обобщённые типы и преобразования

Методы вроде map передают типы через цепочку преобразований. Преобразование int в строки даёт Iterable из String.

var labels = [1, 2].map((n) => 'n=$n');

Пользовательские обобщённые контейнеры

Ваши собственные обобщённые классы тоже встраиваются в эту систему. Stack из T может хранить элементы любого типа, выбранного вызывающим кодом.

class Stack<T> {
  final _items = <T>[];
  void push(T x) => _items.add(x);
}

Безопасность на всём пути

От объявления до преобразования и хранения тип остаётся известным. В этом и заключается преимущество: повторное использование и полная проверка на каждом этапе.

Быстрая проверка

Сколько параметров типа принимает Map?

Итоги

Вы типизировали List, Set и Map, использовали вывод типа, указывали типы пустых литералов и вкладывали обобщённые типы. Типы безопасно проходят через каждое преобразование. ✅

Можно начать бесплатно

Изучай Dart с ИИ-репетитором — бесплатно

Пиши и запускай код прямо в браузере, получай мгновенную помощь от ИИ-репетитора 24/7 и продолжи учиться на сайте или в приложении.

Курсы
30
Уроки
120

Часто задаваемые вопросы

Урок «Обобщённые коллекции на практике» бесплатный?

Да — полный текст урока «Обобщённые коллекции на практике» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Dart Academy, подпишись на CoddyKit PRO. Курс Dart Academy содержит 4 уроков всего.

Чему я научусь в уроке «Обобщённые коллекции на практике»?

Типизация List, Map и пользовательских контейнеров Ты практикуешь Dart Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Dart Academy?

Предыдущий опыт не требуется. Dart Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 4.

Сколько времени занимает урок «Обобщённые коллекции на практике»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Dart Academy?

Да. Каждый урок Dart Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Почему обобщения лучше dynamic
  2. Обобщённые классы и методы
  3. Ограниченные параметры типов с extends
  4. Обобщённые коллекции на практике
← Назад к Dart Academy