Как я могу вернуть значение Future из объекта Future? Этот код не работает.
import 'dart:async';
void main() {
var temp = foo();
temp.then((Future<int> future) {
future.then((int result) {
print(result);
});
});
}
Future<Future<int>> foo() {
return new Future<Future<int>>(() {
return new Future<int>(() => 5);
});
}
Как предотвратить ненужное разворачивание?
В этом случае в асинхронной библиотеке Future объявлен общий класс.
abstract class Future<T> {
}
Если я создам выражение следующим образом
new Future<Future<int>>();
Затем с типом T
, указанным как Future<int>
, какой результат ожидается от универсального класса Future?
Я считаю, что результат должен быть таким, как указано в аргументе типа T
.
I.e. Future<int>.
Но результат не такой, как ожидалось. Информации об этом ненормальном поведении на сайте Dart API нет.
Если это «функция» (но я думаю, что ненормальное поведение неправильно называть «функцией»), то почему она не задокументирована в Dart API?
Чем можно объяснить это несоответствие?
Почему этот код не выдает ошибок и предупреждений?
Другой ИДЕНТИЧНЫЙ пример, но без использования Future.
void main() {
var temp = foo();
temp.baz((Foo<int> foo) {
foo.baz((int result) {
print(result);
});
});
}
Foo<Foo<int>> foo() {
return new Foo<Foo<int>>(() {
return new Foo<int>(() => 5);
});
}
Если в этом случае результат будет таким же, как при использовании Future (т.е. неожиданным), то как мы можем назвать этот код? Нормальный или ненормальный?
А может Будущее в Дротике какое-то особенное (волшебное)?