在 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
如何处理函数参数,但无法完成本应简单的任务:
得到错误
表达式不是有效的编译时常量例如尝试过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?的主要内容,如果未能解决你的问题,请参考以下文章