我正在尝试基于指定的泛型类型转换和/或生成变量.我知道swift中没有类型擦除,但它似乎不是泛型保留类型,而不是通用的指定条件,例如符合基类.似乎所有我可以投射或初始化的是基类.更奇怪的是,当我在调试器中时,泛型似乎有一个RawPointer到正确的类,甚至变量看起来像他们是正确的类型:
编辑:
从Xcode 6.1开始,这仍然是个问题(简化代码由Gregory Higley提供):
class BaseClass {
func printme() -> Void {
println("I am BaseClass")
}
}
class DerivedClass : BaseClass {
override func printme() -> Void {
println("I am DerivedClass")
}
}
class Util<T: BaseClass> {
func doSomething() {
var instance = T()
instance.printme()
}
}
var util = Util<DerivedClass>()
util.doSomething()
Run Code Online (Sandbox Code Playgroud)
仍打印出"我是BaseClass"
还要注意基类中所需的init {}不再有效.
