我想知道我是否可以使用映射调用带有名称参数的函数,例如
void main()
{
Map a = {'m':'done'}; // Map with EXACTLY the same keys as slave named param.
slave(a);
}
void slave({String m:'not done'}) //Here I should have some type control
{
print(m); //should print done
}
这里的技巧是不使用 kwargs 而是使用 Map,或者,如果您关心类型,则使用一些接口类(就像 Json-obj 一样),但是让它接受 map 作为 kwars 不是更优雅吗?更多,使用这个 hack,可选的 kwargs 可能会变得很痛苦......恕我直言,一个可能的实现,如果它还不存在的话,会是这样的:
slave(kwargs = a)
例如,每个接受命名参数的函数都可以静默接受 (Map) kwargs (或其他名称) 参数,如果定义了 dart 应该在幕后处理这个逻辑:如果 Map 中的键完全是非可选的,加上一些可选的,在 {} 括号中定义,并且兼容类型“继续”。