Статьи » Инициализация коллекций, списков, массивов и хеш-таблиц
Инициализация коллекций, списков, массивов и хеш-таблиц
Объявление массивов с помощью сокращенной записи
Простейшие коллекции представлены в dart классом List
, они могут быть фиксированного или динамического размера, и содержать типизированные или произвольные объекты. Доступ к элементам осуществляется, как с помощью итератора, так и по индексу элемента. Чтобы объявить и инициализировать такой массив, можно воспользоваться сокращенной записью с помощью квадратных скобок:
// объявляем переменную dynamicList и инициализируем ее, как массив:
var dynamicList = [1, 2, 3, "one", "two"];
//получим в выводе [1, 2, 3, one, two]
print(dynamicList);
в таком случае, будет создан динамический массив с не типизированными элементами, то есть будет возможно добавлять любое количество элементов любого типа. Так же стоит отметить, что даже если мы объявим переменную как типизированный список и инициализируем ее с помощью записи [a, b, ...]
, то все равно получим не типизированный список, т.е.:
// объявляем переменную arrayOfDoubles как список вещественных чисел, и инициализируем ее следующими значениями:
List<double> arrayOfDoubles = [2.5, 5.0, 7.5, 10.0];
// добавляем к списку новый элемент - строку
arrayOfDoubles.add("upps!");
//получим в выводе [2.5, 5.0, 7.5, 10.0, upps!]
print(arrayOfDoubles);
Инициализация массивов с помощью конструктора List.from()
Для того, чтобы объявить и инициализировать типизированный список необходимо воспользоваться конструктором List.from():
List<Duration> arrayOfDurations = new List<Duration>.from([new Duration({days: 1), new Duration({days: 7), new Duration({days: 30)]);
print(arrayOfDurations);
Но, если мы объявляем типизированный список, то уже необходимо обращать внимание но те элементы, который, мы будем к нему добавлять, то есть:
// будет сгенерирована ошибка
List<double> arrayOfDouble1 = new List<Duration>.from([1.0, 2.0, "exceptions"]);
List<double> arrayOfDouble1 = new List<Duration>.from([1.0, 2.0]);
// будет сгенерирована ошибка
arrayOfDouble2.add("exception");
Ну и последний вариант инициализации, это сначало объявить, а потом поочередно добавить необходимые элементы:
List<String> arrayOfStrings = new List<String>();
arrayOfString.add("apple");
arrayOfString.add("bannan");
arrayOfString.add("orange");
Коллекции других типов, такие как очереди, наборы, и т.д. можно так же инициализировать с помощью конструкторов Queue.from(), Set.from() или добавляя элементы.
Инициализация ассоциативных массивов
Для инициализации ассоциативных массивов (или хеш-таблиц) существует отдельный сокращенный синтаксис, с использованием фигурных скобок:
Map<String, Date> mapOfDates = {
"today": new Date.now(),
"yesterday": new Date.now().add(new Duration(days: -1)),
"tomorrow": new Date.now().add(new Duration(days: 1)),
};
print(mapOfDates);