【发布时间】:2019-10-09 07:56:33
【问题描述】:
在阅读 dart 代码时,我经常会看到一些仅使用下划线 _ 参数调用的函数。它困扰了我一段时间,由于颤振改进了它的分析消息,我有一些线索......但我觉得我并没有真正理解这个概念:-(
昨天我写了以下测试:
when(mockDevice.getLocalPath()).thenAnswer(() async => fileFolder);
并得到以下分析
错误:不能将参数类型“Future Function()”分配给参数类型“Future Function(Invocation)”。
添加下划线时效果很好。
when(mockDevice.getLocalPath()).thenAnswer((_) async => fileFolder);
我遇到的最可怕的例子来自@remi rousselet 写的provider package
builder: (_, counter, __) => Translations(counter.value),
来自提供者示例:
Widget build(BuildContext context) {
return MultiProvider(
providers: [
ChangeNotifierProvider(builder: (_) => Counter()),
ProxyProvider<Counter, Translations>(
builder: (_, counter, __) => Translations(counter.value),
),
],
child: Foo(),
);
}
class Translations {
const Translations(this._value);
final int _value;
String get title => 'You clicked $_value times';
}
【问题讨论】:
-
我第一次投反对票。我是否应该理解我的问题被视为需要讨论而不是回答?我一直在寻找答案,而我带有许多下划线的奇怪标题是因为很难在互联网上寻找 (_) ;-)