Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Dart-使用贴图命名的参数_Dart - Fatal编程技术网

Dart-使用贴图命名的参数

Dart-使用贴图命名的参数,dart,Dart,我想知道我是否可以使用映射调用带有名称参数的函数,例如 void main() { 映射a={m':'done'};//映射的键与名为param的从机的键完全相同。 奴隶(a); } void slave({String m:'not done'})//这里我应该有一些类型控件 { 打印(m);//应该完成打印吗 } 这里的技巧不是使用kwargs,而是使用一个映射,或者,如果您关心类型的话,使用一些接口类(就像Json obj),但是让它将映射作为kwars来接受不是更优雅吗? 更重要的是

我想知道我是否可以使用映射调用带有名称参数的函数,例如

void main()
{
映射a={m':'done'};//映射的键与名为param的从机的键完全相同。
奴隶(a);
}
void slave({String m:'not done'})//这里我应该有一些类型控件
{ 
打印(m);//应该完成打印吗
}
这里的技巧不是使用kwargs,而是使用一个映射,或者,如果您关心类型的话,使用一些接口类(就像Json obj),但是让它将映射作为kwars来接受不是更优雅吗? 更重要的是,使用这种黑客,可选的kwargs可能会成为一种痛苦。。。 IMHO一个可能的实现,如果它还不存在,将类似于:

slave(kwargs = a)
e、 g.每个接受命名参数的函数都可以静默地接受(Map)kwargs(或其他名称)参数,如果定义了,dart应该在后台处理这个逻辑:如果映射中的键恰好是非可选的,加上一些可选的,在{}括号中定义的,并且是兼容类型的“继续”.

您可以使用来执行类似的操作:

main(){
最终a=新映射();
[const Symbol('m')]='done';
函数。应用(从,[],a);
}
您还可以提取帮助器方法以简化代码:

main(){
最终a=符号化键({m':'done'});
函数。应用(从,[],a);
}
地图符号化关键点(地图地图){
最终结果=新映射();
forEach((字符串k,v){result[新符号(k)]=v;});
返回结果;
}

Ok,就是我刚才搜索的:)值得注意的是,调用“new Symbol()”会使dart2js更难缩小代码。这可能会导致js输出膨胀。您最好将slave()更改为将映射作为参数。如何将其用于构造函数?由于某些值可能是其他“对象”,我想知道我们是否可以使用反射来递归推断命名参数的类型。