Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗dtSpGnNl 7 of 224 menu
◀ ▶

Nullable-параметр в Dart

Запись T в объявлении сама по себе не допускает null: подставленный тип должен быть ненулевым, если только тип явно не написали T? в нужном месте сигнатуры.

Функция может искать элемент в списке и не находить его - тогда результат помечают как nullable через T?, а список остается List<T>:

T? findFirst<T>(List<T> list, bool Function(T) match) { for (final item in list) { if (match(item)) { return item; } } return null; } final nums = [2, 4, 6]; print(findFirst(nums, (n) => n > 10)); print(findFirst(nums, (n) => n == 4));

Если бы параметр типа объявили как T? в угловых скобках, смысл был бы другой: сам T уже включал бы null, и List<T> хранил бы nullable-элементы. Сравните с функцией, которая возвращает строго T и завершает программу с ошибкой, когда список пуст:

T firstStrict<T>(List<T> list) { if (list.isEmpty) { throw StateError("empty"); } return list[0]; } final words = ["io", "api"]; print(firstStrict(words));

Объявите функцию, которая возвращает последний элемент списка или null для пустого списка. Проверьте на пустом списке строк и на списке из одного слова "go", оба результата выведите.

Объявите функцию, которая возвращает первый элемент списка и завершает программу с ошибкой, если список пуст. Для списка 7, 8 выведите полученное число.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить