Что значит передать ` ' (т. е. подчеркивание) в качестве единственного параметра функции языка 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. Спасибо