3
Это изолированный пример, поэтому может показаться менее полезным, но мне все равно интересно, почему это не работает? Любое понимание очень ценится.Swift Generics (тип substitution?)
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)'
Это вариант [Протокол не соответствует самому себе?] (Http://stackoverflow.com/questions/33112559/protocol-doesnt-conform-to-itself) - вы не можете использовать 'Prot' как тип, который соответствует 'Prot'. – Hamish