喜欢Dart
如何处理函数参数,但无法完成应该是一项简单的任务:
void func( String arg1, [ Map args = {} ] ) { ... }
得到错误
expression is not a valid compile-time constant例如,
已尝试new Map()
,但错误相同。
答案 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 = {};
...
}