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

Function 在Dart中定义函数时,如何设置参数';默认为{},即空映射?,function,dart,default,Function,Dart,Default,喜欢Dart处理函数参数的方式,但无法完成简单的任务: void func( String arg1, [ Map args = {} ] ) { ... } void func(字符串arg1,[Map args={}]){ ... } 获取错误信息 expression is not a valid compile-time constant 表达式不是有效的编译时常量 例如,您尝试了new Map(),但出现了相同的错误。您必须使用const关键字: void func(字符串

喜欢
Dart
处理函数参数的方式,但无法完成简单的任务:

void func( String arg1, [ Map args = {} ] ) { ... } void func(字符串arg1,[Map args={}]){ ... } 获取错误信息

expression is not a valid compile-time constant 表达式不是有效的编译时常量
例如,您尝试了
new Map()
,但出现了相同的错误。

您必须使用
const
关键字:

void func(字符串arg1,[Map args=const{}]){
...
}
警告:如果尝试修改默认的
args
,您将得到:

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


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

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

void func(字符串arg1,[Map args]){
如果(args==null)args={};
...
}

这是否允许我更改函数体中的
args
,例如,
args['me']='imf'否,将出现运行时错误:不支持的操作:无法在不可修改的映射中设置值