Что означает передать `_` (т.е. Подчеркивание) как единственный параметр для функции языка Дарт?

Я изучаю Дарт и вижу следующую идиому:

someFuture.then((_) => someFunc());

Я также видел код вроде:

someOtherFuture.then(() => someOtherFunc());

Существует ли разница между этими двумя примерами? A.k.a., Что передает _ как параметр функции Дарта??

Это особенно запутанно, учитывая использование Dart _ в качестве префикса для объявления частных функций.

Спасибо.

Ответ 1

Это переменная с именем _ обычно, потому что вы планируете не использовать ее и выбросить. Например, вы можете использовать имя x или foo. Разница между (_) и () проста в том, что одна функция принимает аргумент, а другая - нет.

Ответ 2

Это выражение похоже на "обратные вызовы" в node.js, выражение имеет отношение к async-задаче.

Сначала помните, что выражение => expr является сокращением для {return *expr*}, теперь в someFuture.then((_) => someFunc()), someFuture является переменной типа Future, и это сохраняет вашу задачу async, с помощью метода .then, который вы говорите что делать с вашей задачей async (после завершения), и аргументы в этом методе вы поместите обратный вызов ((response) => doSomethingWith(response)).

Вы узнаете больше в API на основе будущего и Функции в Dart. Благодаря