作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在 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>> {}
但是,C1
和 C2
不匹配 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/
我是一名优秀的程序员,十分优秀!