Что значит передать ` ' (т. е. подчеркивание) в качестве единственного параметра функции языка Dart?
Я изучаю Dart и вижу следующую идиому много:
someFuture.then((_) => someFunc());
Я также видел код, как:
someOtherFuture.then(() => someOtherFunc());
есть ли функциональная разница между этими двумя примерами?
А. К. a., Что делает passing _
как параметр функции Dart do?
Это особенно запутанно, учитывая использование дротика _
в качестве префикса для объявления частных мероприятий.
спасибо.
2 ответов
это переменная с именем _
Как правило, потому что вы планируете не использовать его и выбросить. Например, вы можете использовать имя x
или foo
вместо.
Разница между (_)
и ()
просто в том, что одна функция принимает аргумент, а других нет.
это выражение похоже на "вызовы" в узел.JS, выражение имеет отношение к асинхронной задаче.
во-первых, помните, что => expr
выражение является сокращением для {return *expr*}
, теперь someFuture.then((_) => someFunc())
, someFuture
- это переменная типа Future
, и это сохраняет вашу асинхронную задачу с .then
метод вы говорите, что делать с вашей асинхронной задачей (после завершения), и args в этом методе вы помещаете обратный вызов ((response) => doSomethingWith(response))
.
вы узнаете больше на Будущие API и функции в Dart. Спасибо