繁体   English   中英

如何在 dart 中将默认参数分配给除 map 参数之外的函数

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM