|
|
1
2
正如@matt所建议的,将我的各种评论转移到“你的问题没有好的解决方案,你需要重新设计你的问题”的形式上 你想做的事情充其量是脆弱的,最坏的情况下是不可能的。马特的方法是一个很好的解决方案,当你试图提高性能,但它打破了令人惊讶的方式,如果它影响行为。例如:
所以这就像我们预期的那样。但我们可以通过这种方式丢失类型信息:
所以你不能用泛型来解决这个问题。 回到你的方法,它至少有可能变得强大,但它仍然不起作用。斯威夫特的打字系统无法表达你想说的话。但我认为你无论如何都不应该这么说。
如果从API抓取与从数据库抓取表示不同的语义(而不仅仅是性能改进),那么即使可以让它工作,这也是非常危险的。程序的任何部分都可以附加
完美的如果你已经有了一个类,那么类继承在这里很有意义。我可能会这样做:
根据您的具体需求,您可能会重新安排(在这里,协议也可能是可行的)。但关键是
模型
知道如何找回自己。这使得在类内部使用Decodable变得很容易(因为它可以很容易地使用
你的需求可能不同,如果你能更好地描述它们,也许我们会找到更好的解决方案。但它不应该基于某件事是否仅仅符合协议。在大多数情况下,这是不可能的,如果你让它工作,它将是脆弱的。 |
|
|
2
1
你真正想做的是有两个版本的
不幸的是,您不能这样做,因为您不能执行依赖于泛型类型解析的函数重载。但可以通过将函数装箱到泛型中来解决这个问题 类型 ,因为可以有条件地扩展该类型。 因此,为了展示架构:
这证明了
|