Map< K, V>.fromIterable constructor
- Iterable iterable,
- {K key(
- dynamic element
- V value(
- 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