在 Swift 2 中,我有一个协议:
protocol Protocol {
typealias Type
}
当我想使用Protocol
而不定义要使用的类型时Type
:
var protocol1: Protocol
然后我收到以下错误:
协议“协议”只能用作通用约束,因为它具有 Self 或关联的类型要求
很清楚为什么这不起作用。
我有另一个协议,它继承自第一个协议并指定关联类型Type
应该是String
.
protocol AnotherProtocol: Protocol {
typealias Type = String
}
当我尝试使用此协议时,也会发生同样的错误:
var protocol2: AnotherProtocol
Protocol 'AnotherProtocol' 只能用作通用约束,因为它具有 Self 或关联的类型要求
尽管我已经指定了关联的类型,但为什么会出现错误?
第二个协议是否有另一种方法来指定父协议的关联类型,而不必在每个实现第二个协议的类中再次指定它?