РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
132 of 723 menu

Ключевое слово late

Ключевое слово late позволяет объявить переменную, которая будет инициализирована не сразу, а позже - при первом обращении к ней. При этом переменная может быть объявлена как не-nullable тип, и компилятор не будет требовать немедленной инициализации. Если обратиться к late-переменной до её инициализации, будет выброшено исключение LateInitializationError. Ключевое слово late особенно полезно для ленивой инициализации полей класса, когда значение вычисляется дорого или зависит от других данных, доступных только после создания объекта.

Синтаксис

late Type variable; late Type variable = value;

Пример

Давайте объявим late-переменную и инициализируем её позже:

void main() { late String str; str = 'abcde'; print(str); }

Результат выполнения кода:

"abcde"

Пример

Давайте попробуем обратиться к late-переменной до её инициализации:

void main() { late int num; print(num); }

Результат выполнения кода:

Unhandled exception: LateInitializationError: Field 'num' has not been initialized.

Пример

Давайте используем late для ленивой инициализации поля класса:

class Calculator { late int res; Calculator() { print('Object created'); } int compute() { late int a = 2; late int b = 3; res = a + b; return res; } } void main() { Calculator calc = Calculator(); print(calc.compute()); }

Результат выполнения кода:

"Object created" 5

Пример

Давайте используем late с коллекцией и добавим элементы после объявления:

void main() { late List<int> numbers; numbers = [1, 2, 3, 4, 5]; print(numbers); }

Результат выполнения кода:

[1, 2, 3, 4, 5]

Смотрите также

  • оператор ??,
    который возвращает значение по умолчанию
  • оператор ??=,
    который присваивает значение при null
  • оператор ?.,
    который безопасно обращается к свойствам
  • оператор !,
    который утверждает не-null значение
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить