Spec-Zone.ru › Dart 2

dart:core

Конструктор Map<K, V>.fromIterable

Map<K, V>.fromIterable(
  1. Iterable iterable,
  2. {K key(
    1. dynamic element
    )?,
  3. V value(
    1. 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API