gpt4 book ai didi

dart - 如何创建可创建不同类型对象的调度表

转载 作者:行者123 更新时间:2023-12-03 03:02:14 25 4
gpt4 key购买 nike

如果我定义了一堆类:

class A  {
final List<int> value;
A(this.value);
static make(List<int> value) => new A(value);
}
// more class defs here
class Z {
final List<String> value;
Z(this.value);
static make(List<String> value) => new A(value);
}

然后以下内容不起作用,因为Type没有方法
Map<int, Type> typeMap = {0: A, 25: Z};
new typeMap[0]([1, 2, 3])

但是以下方法确实有效。虽然,创建静态make方法需要大量的额外工作。
Map<int, Function> funcMap = {0: A.make, 25: Z.make};
funcMap[0]([1, 2, 3])

有一个更好的方法吗?

最佳答案

不是,不是

有一种用于将构造函数转换为函数的语法,但尚未在所有地方实现,并且将来可能会更改,因此不建议使用它。

使用makecreate函数的替代方法是在 map 中内联编写该函数:dart
Map<int, Function> funcMap = {0: (v) => new A(v), 25: (v) => new Z(v)};
究竟是可读性还是高可读性都取决于品味。

关于dart - 如何创建可创建不同类型对象的调度表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40349671/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com