我有一个类看起来像这样:
class MyContainer<T> {
required init() {}
class func giveMeAContainer() -> MyContainer<Any?> {
let container: MyContainer<Any?> = self()
return container
}
}
我从编译器'T' is not identical to 'Any?'
收到错误。
我尝试了self<Any?>()
,但显然这不是合法的语法。
那么,我可以通过类函数中的关键字self
初始化泛型类吗?
---更新0
我希望通过此函数返回类型MyContainer<Any?>
的值。
但是,当我创建子类时,我不想覆盖此函数以返回MyChildContainer<Any?>
继承MyContainer<T>
。
我相信MyChildContainer<Any?>
是MyContainer<Any?>
。所以这在逻辑上是合法的。
---更新1
我意识到我想要的是
class func giveMeAContainer() -> Self<Any?> {
return self<Any?>()
}
但显然,这对编译器来说是不合法的。
答案 0 :(得分:0)
你想做什么?
您要退回self()
吗?
class func giveMeAContainer() -> MyContainer<T> {
let container: MyContainer<T> = self()
return container
// or
// return self()
}
您要返回MyContainer<Any?>
class func giveMeAContainer() -> MyContainer<Any?> {
let container: MyContainer<Any?> = MyContainer<Any?>()
return container
// or
// return MyContainer<Any?>()
}