【发布时间】:2015-11-21 21:52:57
【问题描述】:
我正在查看一些开源库,例如 ReactiveCocoa 和 Alamofire,我注意到 Signal.swift (ReactiveCocoa) 中的这种语法:
extension SignalType where Value: SignalProducerType, Error == Value.Error
我知道Value: SignalProducerType 将约束添加到泛型或关联类型Value,无论是类还是协议约束。但是Value: SignalProducerType和使用==有什么区别呢?
对于以下人为的示例:
protocol Test {
typealias Value
}
extension Test where Value: NSObject, Value == NSError {
}
这和
有什么不同extension Test where Value: NSObject, Value: NSError {
}
这两个例子都能编译。
在此基础上,你能用Self 做到这一点吗?比如:
extension Test where Self: SomeClass, Self == NSError
【问题讨论】:
标签: ios swift generics protocols