为什么未解析的泛型类型在泛型中是合法的?

也许我是非常密集,我意识到我应该知道这种事情,但我对此感到惊讶:

class Wrapper<T> {
    let value: T
    var wrapper: Wrapper? // ok
    init(value: T) {
        self.value = value
    }
}
class Thing {
    var wrapper: Wrapper? // error
}

错误是在类 Thing 中,我必须在声明类型时解析 Wrapper 泛型;我需要说,例如,

var wrapper: Wrapper<String>?

为什么在 Wrapper 中声明一个属性具有 Wrapper 类型而不是其他地方是合法的?是什么让 Wrapper 内部的声明正常?是不是因为编译器只是假设在 Wrapper 内部,Wrapper意味着Wrapper<T>

以上是为什么未解析的泛型类型在泛型中是合法的?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>