gpt4 book ai didi

flutter - 在 dart/flutter 中调用函数时传递下划线 _ "_"(_) 是什么意思?

转载 作者:行者123 更新时间:2023-12-02 10:17:58 37 4
gpt4 key购买 nike

在阅读 dart 代码时,我经常看到一些仅使用下划线 _ 参数调用的函数。这让我困扰了一段时间,由于 flutter 改进了它的分析消息,我有了一些线索......但我觉得我并没有真正理解这个概念:-(

昨天我写了以下内容进行测试:

when(mockDevice.getLocalPath()).thenAnswer(() async => fileFolder);

并获得以下分析

error: The argument type 'Future Function()' can't be assigned to the parameter type 'Future Function(Invocation)'.

添加下划线时效果很好。

when(mockDevice.getLocalPath()).thenAnswer((_) async => fileFolder);

我遇到的最可怕的例子来自 @remi rousselet 编写的提供程序包

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';
}

最佳答案

下划线通常表示您不会在 block 内使用该参数,这只是编写代码的好方法,例如:

method(int useful, int useless) {
// say I am only going to use 'useful' in this block
}

上面的代码也可以写成:

method(int useful, int _) {
// using '_' means I'm not going to use 2nd parameter in the block
}
<小时/>

现在回答您的问题:

builder: (_, counter, __) => Translations(counter.value),

意味着你有3个参数_counter__,并且只有counter是你正在使用的,因此第一个和第三个参数用 ___ 表示。这只是编写代码的更简洁的方式。

关于flutter - 在 dart/flutter 中调用函数时传递下划线 _ "_"(_) 是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58299500/

37 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com