Карточка Junior Dart: типы и null-safety обновлено
Зачем нужен late
Вопрос
Для чего используют late в Dart? Приведите два сценария.
Попробуйте сами
Ответьте про себя или вслух, потом откройте ответ и сверьтесь.
Показать ответ и разбор
Коротко
1) Поле ненулевого типа, которое нельзя задать в конструкторе, но гарантированно задают до использования (например, в initState). 2) Ленивая инициализация: late final x = compute(); вычисляется при первом чтении.
Ответ
- Поле ненулевого типа, которое нельзя задать в конструкторе, но гарантированно задают до использования (например, в
initState). 2) Ленивая инициализация:late final x = compute();вычисляется при первом чтении. Цена: проверка переносится в рантайм, чтение до присвоения бросаетLateInitializationError.
Разбор
Во Flutter классический пример: late final AnimationController _c; в State.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.
Ещё по теме «Dart: типы и null-safety»
- Dart: канонизация const-объектов
- Dart: деление / и ~/
- Dart: почему не сужается тип публичного поля
- Dart: чем final отличается от const
- Dart: когда выполняется map у Iterable
- Dart: чтение late-переменной до присвоения
- Объявления переменных в Dart
- Dart: collection if, for и spread