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

Posted

技术标签:

【中文标题】在 Dart 中定义函数时,如何将参数的默认值设置为 ,即空 Map?【英文标题】:in defining a function in Dart, how to set an argument's default to , ie, an empty Map?在 Dart 中定义函数时,如何将参数的默认值设置为 ,即空 Map? 【发布时间】:2013-11-25 08:42:01 【问题描述】:

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

无效函数(字符串arg1,[映射args = ]) ...

得到错误

表达式不是有效的编译时常量

例如尝试过new Map(),但错误相同。

【问题讨论】:

【参考方案1】:

你必须使用const关键字:

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

警告:如果你尝试修改默认的args,你会得到:

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

【讨论】:

这是否允许我更改函数主体中的args,例如args['me']='myself'; 不,你会得到一个运行时错误:不支持的操作:无法在不可修改的地图中设置值【参考方案2】:

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

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

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

【讨论】:

以上是关于在 Dart 中定义函数时,如何将参数的默认值设置为 ,即空 Map?的主要内容,如果未能解决你的问题,请参考以下文章

如何在Python中定义静态变量

自定义函数

如何通过 Dart 中的 onTap 函数将值传递到另一个屏幕?

Dart语法之可选参数

Python函数默认参数设置(超级详细)

将默认参数定义为全局变量