gpt4 book ai didi

swift - 泛型模式的泛型

转载 作者:行者123 更新时间:2023-11-28 07:50:31 25 4
gpt4 key购买 nike

在 swift 中

class A {}
class A1: A {}
class A2: A {}

class B<Ax: A> {}
class B1: B<A1> {}
class B2: B<A2> {}

class C<Bx: B> {}
class C1: C<B1> {}
class C2: C<B2> {}

这是我想做的事情的想法。实现A效果很好和 B类的。但我不能让它为 C 工作类(class)。看来我必须指定 B什么是 A输入:

class C<Bx: B<A>> {}

但是,C1C2不匹配 C类继承,原因B1 (又名 B<A1> )和 B2 (又名 B<A2> )不继承自 B<A>

如何让它在 Swift 中工作?

最佳答案

这只有通过 C 才能真正解决在两种类型参数上通用。

class C<Ax: A, Bx: B<Ax>> {}
class C1: C<A1, B1> {}
class C2: C<A2, B2> {}

不幸的是不得不重复 A 的子类在 C 的子类的签名中,但您至少会在编译时检查您正在寻找的正确继承关系。例如

class C2: C<A1, B2> {} // error

会产生错误 'C' requires that 'B2' inherit from 'B<A1>' .

关于swift - 泛型模式的泛型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49817576/

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