我有一个看起来像这样的类:
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?>()
}
但显然,这对编译器来说是不合法的。
最佳答案
你想做什么?
要不要返回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?>()
}
关于ios - 在类函数中通过关键字 `self` 初始化泛型类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26247135/