Конструктор Map< K, V>.fromIterable
- Iterable iterable,
- {K key(
- dynamic element
- V value(
- dynamic element
Создаёт экземпляр Map, в котором ключи и значения вычисляются из iterable.
Для каждого элемента iterable, пара ключ/значение вычисляется путём применения key и value к элементу итерируемого объекта, соответственно.
Эквивалентно литералу карты:
<K, V>{for (var v in iterable) key(v): value(v)} Литерал, как правило, предпочтительнее, так как он позволяет более точно указать тип.
В примере ниже создаётся новая карта из списка целых чисел. Ключи map — это list значения, преобразованные в строки, а значения map — это квадраты list значений:
final numbers = <int>[1, 2, 3];
final map = Map<String, int>.fromIterable(numbers,
key: (item) => item.toString(),
value: (item) => item * item);
print(map); // {1: 1, 2: 4, 3: 9} Если для key и value не указаны значения, то по умолчанию используется функция тождества. В этом случае элемент итерируемого объекта должен быть присваиваем типу ключа или значения создаваемой карты.
В следующем примере ключи и соответствующие значения map — это list значения напрямую:
final numbers = <int>[1, 2, 3];
final map = Map.fromIterable(numbers);
print(map); // {1: 1, 2: 2, 3: 3} Ключи, вычисленные исходным iterable, не обязательно должны быть уникальными. Последнее появление ключа перезапишет значение любого предыдущего появления.
Создаваемая карта является объектом LinkedHashMap. Для LinkedHashMap требуется, чтобы ключи реализовывали совместимые operator== и hashCode. Она итерируется в порядке вставки ключей.
Реализация
factory Map.fromIterable(Iterable iterable,
{K key(dynamic element)?,
V value(dynamic element)?}) = LinkedHashMap<K, V>.fromIterable;
© 2012 the Dart project authors
Licensed under the BSD 3-Clause "New" or "Revised" License.
https://api.dart.dev/stable/2.18.5/dart-core/Map/Map.fromIterable.html