这是一个孤立的例子,所以可能看起来不那么有用,但无论如何我想知道为什么它不起作用?任何见解都非常赞赏。
protocol Prot: class {
init()
}
class A: Prot {
required init(){ }
}
struct Client<T: Prot> {
let tau: T.Type
}
if let aTau = A.self as? Prot.Type {
print(aTau === A.self) // ✅
Client(tau: A.self) // ✅
Client(tau: aTau) // ❌
}
错误是:
Cannot invoke initializer for type 'Client<_>' with an argument list of type '(tau: Prot.Type)'
答案 0 :(得分:2)
泛型Client
类需要具体的专门化类型 - 即类/结构/枚举,Prot.Type
不符合此要求。这就是你得到错误的原因。