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

Тип FutureOr

Тип FutureOr<T> означает одно из двух: уже готовое значение типа T или Future<T>, которое даст такое значение позже. Это не отдельный объект, который создают конструктором, а пометка типа. Она нужна там, где функция может вернуть результат сразу или отложить его. Тип лежит в библиотеке dart:async, её нужно импортировать. Оператор await подходит и к голому значению, и к Future: в обоих случаях получается T.

Синтаксис

import 'dart:async'; FutureOr<int> name = 10; FutureOr<int> name = Future<int>.value(10);

Пример

Давайте вернём из функции то число, то будущий результат с тем же типом FutureOr<int>:

import 'dart:async'; FutureOr<int> load(bool later) { if (later) { return Future<int>.value(10); } return 10; } void main() async { print(await load(false)); print(await load(true)); }

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

10 10

Пример

Давайте проверим, какой из двух вариантов сейчас лежит в переменной:

import 'dart:async'; void main() { FutureOr<int> direct = 4; FutureOr<int> later = Future<int>.value(6); print(direct is int); print(later is Future<int>); }

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

true true

Пример

Давайте примем FutureOr<int> и дождёмся числа. Future.value подходит и для готового значения, и для будущего результата:

import 'dart:async'; Future<int> normalize(FutureOr<int> value) { return Future<int>.value(value); } void main() async { print(await normalize(4)); print(await normalize(Future<int>.value(6))); }

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

4 6

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

  • тип Future,
    который обозначает один будущий результат
  • тип Stream,
    который выдаёт несколько событий со временем
  • класс Future,
    в котором собраны методы будущих результатов
  • ключевое слово await,
    которое ждёт завершения Future
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить