Конструктор from
Конструктор from класса Map создает
новую Map, копируя все ключи и значения из
переданной Map. В первый параметр мы передаем
исходную Map, из которой нужно скопировать
данные. Второй параметр необязательный - это
функция преобразования ключей и значений,
которая позволяет изменить элементы при
копировании.
Новая Map является независимой копией исходной: изменение одной из них не влияет на другую. Однако если значения являются объектами, они копируются по ссылке.
Синтаксис
Map.from(other)
Map.from(other, transform)
Пример
Давайте создадим новую Map на основе существующей и выведем обе:
void main()
{
Map<String, int> original = {'a': 1, 'b': 2, 'c': 3};
Map<String, int> copy = Map.from(original);
print(original);
print(copy);
}
Результат выполнения кода:
{a: 1, b: 2, c: 3}
{a: 1, b: 2, c: 3}
Пример
Давайте проверим, что новая Map является независимой копией - добавим элемент в копию и выведем обе Map:
void main()
{
Map<String, int> original = {'a': 1, 'b': 2};
Map<String, int> copy = Map.from(original);
copy['c'] = 3;
print(original);
print(copy);
}
Результат выполнения кода:
{a: 1, b: 2}
{a: 1, b: 2, c: 3}
Пример
Давайте используем функцию преобразования, чтобы увеличить все значения в два раза при копировании:
void main()
{
Map<String, int> original = {'a': 1, 'b': 2, 'c': 3};
Map<String, int> res = Map.from(
original,
(key, value) => MapEntry(key, value * 2)
);
print(res);
}
Результат выполнения кода:
{a: 2, b: 4, c: 6}
Смотрите также
-
конструктор
of,
который создает Map из пар ключ-значение -
конструктор
fromEntries,
который создает Map из коллекции MapEntry -
конструктор
fromIterable,
который создает Map из итерируемого объекта -
класс
Map,
который представляет коллекцию пар ключ-значение