爱Dart
对待如何运作的论点,但不能完成的任务应该是一个简单的任务:在Dart中定义函数,如何将参数的默认设置为{},即空Map?
void func(String arg1, [ Map args = {} ]) { ... }
得到错误
expression is not a valid compile-time constant
试图new Map()
例如,用同样的错误。
爱Dart
对待如何运作的论点,但不能完成的任务应该是一个简单的任务:在Dart中定义函数,如何将参数的默认设置为{},即空Map?
void func(String arg1, [ Map args = {} ]) { ... }
得到错误
expression is not a valid compile-time constant
试图new Map()
例如,用同样的错误。
默认值必须是编译时间常量,所以'const {}'会使编译器保持高兴,但possi bly不是你的功能。
如果您想为每个调用指定一个新的可修改映射,则不能在函数参数上使用默认值。每次调用该函数时都会使用相同的值,因此您无法以这种方式为每个调用获取新值。 要在每次调用函数时创建一个新对象,您必须在函数本身中执行此操作。典型的方式是:
void func(String arg1, [Map args]) {
if (args == null) args = {};
...
}
您必须使用const
关键字:
void func(String arg1, [ Map args = const {} ]) {
...
}
警告:如果您尝试修改默认args
您将获得:
不支持的操作:不能设置值不可修改的地图
将这个让我改变'在函数体中,如'ARGS [“我的”] =“自己” args';' –
没有,你会得到一个运行时错误:不支持的操作:无法在不可修改的Map中设置值 –