[英]How to assign a default parameter to a function aside of map parameter in dart
知道如何将默认参数分配给飞镖中Map
参数之外的函数吗?
static Future functionName(
bool isDone,
[
Map<String, String> params,
]
) async {
....
}
请注意,如果我输入functionName([...],{bool isDone = false})
它在我删除[...],
如果你希望isDone
有一个默认值,这意味着它需要成为一个可选参数。 你的函数有一个现有的可选位置参数( params
), Dart 目前不允许将可选位置参数与可选命名参数混合。 因此isDone
是可选的,它也必须是位置的。 为了避免破坏现有的调用者,它应该保留第一个参数:
static Future functionName([
bool isDone = false,
Map<String, String>? params, // Remove the `?` if you don't enable null-safety.
]) async {
....
}
然后你会用你已经做的同样的方式来称呼它:
functionName(
true,
{
'key1': value1,
'key2': value2,
...
},
);
这与您现有代码之间的唯一区别是您现在可以将您的函数调用为functionName()
。 如果您希望调用者能够使用params
而不是使用isDone
调用您的函数,那么这将是一个重大更改(您需要更新所有调用者)并且需要重新排序参数或将参数更改为可选的命名参数。
一位朋友帮我解决了这个问题,发现函数 args 可以采用默认值,必须在 [] 或 {} 中给出,所以我们是这样传递它的:
static Future functionName(
[
Map<String, String> params,
bool isDone = false,
]
) async {
....
}
并这样称呼它:
functionName(
{
'key1': value1,
'key2': value2,
...
},
true,
);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.