首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将`_` (即下划线)作为唯一参数传递给Dart语言函数意味着什么?

将`_` (即下划线)作为唯一参数传递给Dart语言函数意味着什么?
EN

Stack Overflow用户
提问于 2014-08-27 00:07:51
回答 6查看 12.7K关注 0票数 61

我正在学习Dart,并经常看到以下成语:

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

我还看到了这样的代码:

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

这两个例子之间有功能上的区别吗?A.k.a.,将_作为参数传递给Dart函数是做什么的?

考虑到Dart使用_作为声明私有函数的前缀,这尤其令人困惑。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2014-08-27 00:24:36

它是一个名为_的变量,通常是因为您计划不使用它并丢弃它。例如,您可以使用名称xfoo(_)()之间的区别很简单,因为一个函数有一个参数,而另一个没有。

不对非私有标识符使用前导下划线。 异常:未使用的参数可以命名为_、__、___等。这种情况发生在回调中,其中传递了一个值,但不需要使用它。给它一个完全由下划线组成的名称是表示值不被使用的惯用方式。

https://dart.dev/guides/language/effective-dart/style

票数 77
EN

Stack Overflow用户

发布于 2021-05-15 09:41:00

下划线(_)通常表示您不会在块中使用此参数。这只是编写代码的一种简洁的方式。

假设我有一个具有两个参数usefuluseless的方法,并且我没有在代码块中使用useless

代码语言:javascript
复制
void method(int useful, int useless) {
  print(useful);
}

由于不会使用useless变量,所以我应该将上述代码编写为:

代码语言:javascript
复制
void method(int useful, int _) { // 'useless' is replaced with '_'
  print(useful);
}
票数 5
EN

Stack Overflow用户

发布于 2015-05-06 06:08:53

该表达式类似于node.js中的“回调”,表达式与异步任务有关。

首先,请记住,=> expr表达式是{return *expr*}的缩写,现在在someFuture.then((_) => someFunc())中,someFuture是一个类型为Future的变量,这将保持异步任务,使用告诉异步任务如何处理(一旦完成)的.then方法,以及在此方法中放置回调((response) => doSomethingWith(response))的args。

您可以在基于未来的API在Dart中的作用了解更多信息。谢谢

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25517016

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档