我有一个泛型类A及其子类B:
class A<T1: Any,T2: Any> {
let x: T1
let y: T2
init (_ v1: T1, _ v2: T2) {
self.x=v1
self.y=v2
}
}
class B<T: Any>: A<T,T> {
init (_ v: T) {
super.init(v,v)
}
}
我需要一组不同的对象,它们都属于A:
的子类var arr=[A<Any,Any>]()
但我无法将对象放入集合中,以下代码会导致错误:
let t=B(10)
arr.append(t as A<Any,Any>)
错误是:
无法转换类型&#39; B&#39;输入&#39; A&#39; (又名 &#39; A,协议&lt;&gt;&gt;&#39;)强制
如何解决这个问题?
答案 0 :(得分:1)
将t
声明为B<Any>
(编译器的推断类型为B<Int>
):
let t: B<Any> = B(10)
arr.append(t) // works