ios - 在类函数中通过关键字 `self` 初始化泛型类

标签 ios swift

我有一个看起来像这样的类:

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/

相关文章:

ios - 在 uitableviewcell 内调整图像大小

ios - 分段控制不改变索引

swift - 如何比较所选行的答案并从 firebase 中检索答案?

swift - 如何继续访问我所在的 UIViewController?

ios - 具有特殊字符的 Swift 正则表达式

ios - iOS 中收到内存压力通知(严重)

ios - 移除 UIPickerView 边框

swift - 带有徽章计数器的自定义 NSToolbarItem

swift - 斐波那契计算器堆栈溢出 Swift 中的第 93 个数字

ios - 在 Objective-C 中使用 GCD 的 dispatch_once 创建单例