Spec-Zone.ru › Dart 2

dart:core

Map<K, V>.fromIterable constructor

Map<K, V>.fromIterable(
  1. Iterable iterable,
  2. {K key(
    1. dynamic element
    )?,
  3. V value(
    1. dynamic element
    )?}
)

Создаёт экземпляр Map, в котором ключи и значения вычисляются на основе iterable.

Для каждого элемента iterable пара «ключ/значение» вычисляется путём применения к элементу итерируемого объекта соответственно key и value.

Эквивалент литерала map:

<K, V>{for (var v in iterable) key(v): value(v)}

Литерал обычно предпочтительнее, поскольку он обеспечивает более точную типизацию.

В приведённом ниже примере создаётся новая map из списка целых чисел. Ключи 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.

В следующем примере ключи и соответствующие им значения map непосредственно являются значениями list:

final numbers = <int>[1, 2, 3];
final map = Map.fromIterable(numbers);
print(map); // {1: 1, 2: 2, 3: 3}

Ключи, вычисляемые из исходного iterable, не обязаны быть уникальными. Последнее появление ключа перезапишет значение любого его предыдущего появления.

Созданная map является 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.19.6/dart-core/Map/Map.fromIterable.html

Spec-Zone.ru

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