在Dart中定义函数时,如何将参数的默认值设置为{},即空映射?

时间:2013-11-25 08:42:02

标签: function dart default

喜欢Dart如何处理函数参数,但无法完成应该是一项简单的任务:

  void func( String arg1, [ Map args = {} ] ) {
    ...
  }

得到错误

  expression is not a valid compile-time constant
例如,

已尝试new Map(),但错误相同。

2 个答案:

答案 0 :(得分:4)

您必须使用const关键字:

void func( String arg1, [ Map args = const {} ] ) {
  ...
}

警告:如果您尝试修改默认args,您将获得:

  

不支持的操作:无法在不可修改的Map中设置值

答案 1 :(得分:3)

默认值必须是编译时常量,因此'const {}'将使编译器满意,但可能不是您的函数。

如果要为每个调用创建新的可修改映射,则不能在函数参数上使用默认值。每次调用函数时都使用相同的值,因此无法为每次调用获取新值。 要在每次调用函数时创建新对象,您必须在函数本身中执行此操作。典型的方法是:

void func(String arg1, [Map args]) {
  if (args == null) args = {};
  ...
}