为什么未解析的泛型类型在泛型中是合法的?
也许我是非常密集,我意识到我应该知道这种事情,但我对此感到惊讶:
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>?