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()更改为将映射作为参数。如何将其用于构造函数?由于某些值可能是其他“对象”,我想知道我们是否可以使用反射来递归推断命名参数的类型。