Оператор spread null
Оператор ...? (spread null) позволяет вставлять
элементы коллекции, которая может иметь значение
null, в другую коллекцию. Если коллекция
равна null, то оператор просто не добавит
ничего, и ошибка не возникнет. Без знака вопроса
оператор ... при попытке развернуть
null выбросит исключение. Оператор
применяется к спискам, множествам и словарям.
Синтаксис
[...?collection]
Пример
Давайте развернём список, который равен
null, внутрь другого списка:
void main()
{
List<int>? items = null;
List<int> res = [1, 2, ...?items, 3];
print(res);
}
Результат выполнения кода:
[1, 2, 3]
Пример
Давайте сравним поведение оператора ...?
с обычным оператором ... на значении
null:
void main()
{
List<int>? items = null;
List<int> res = [1, ...?items, 2];
print(res);
}
Результат выполнения кода:
[1, 2]
А теперь попробуем использовать оператор
... без знака вопроса:
void main()
{
List<int>? items = null;
List<int> res = [1, ...items, 2];
print(res);
}
Результат выполнения кода:
Unhandled exception: Null check operator used on a null value
Пример
Давайте развернём непустой список с помощью
оператора ...?:
void main()
{
List<String>? items = ['b', 'c', 'd'];
List<String> res = ['a', ...?items, 'e'];
print(res);
}
Результат выполнения кода:
[a, b, c, d, e]
Смотрите также
-
оператор
spread null,
который безопасно разворачивает null-коллекции -
оператор
??,
который возвращает значение по умолчанию -
оператор
?.,
который безопасно обращается к членам объекта -
тип
nullable,
который допускает значение null