我对Swift中的泛型有一个快速的问题.问题是我正在尝试存储一个变量,该变量将泛型作为参数,但无法将其强制转换为受其限制的类型.最好用简短的例子解释一下:
class Foo { }
class Thing<T: Foo> {
func produceBar() -> Bar {
return Bar(aThing: self as! Thing<Foo>)
}
}
class Bar {
var thing: Thing<Foo>
init(var aThing: Thing<Foo>) {
self.thing = aThing
}
}
Run Code Online (Sandbox Code Playgroud)
上面的代码产生错误: "Cast from Thing<T> to unrelated type Thing<Foo> always fails"
不应该永远不会失败,因为T被限制为Foo的子类?我一定是误解了Swift中泛型的工作方式,任何指导或帮助都会非常感激!