0
如果associatedtype E
是Result<T>
,我想使用函數擴展協議。我想達到的是類似於以下內容:在協議擴展子句中使用不帶參數的泛型類型
extension SharedSequenceConvertibleType where E == Result {
func filterResult(success: Bool) -> RxCocoa.SharedSequence<Self.SharingStrategy, Self.E> {
return self.filter { result in
switch (result) {
case .Success(_):
return success
case .Failure(_):
return !success
}
}
}
}
enum Result<Element> {
case Success(Element)
case Failure(Swift.Error)
}
不幸的是,斯威夫特抱怨Reference to generic type 'Result' requires arguments in <…>
。如果我使用建議的Fix-It將其更改爲Result<Any>
,則不能在Result<MyObject>
'Result<LoginInfo>' is not convertible to 'Result<Any>'
上使用filterResult
。正如你所看到的,我實際上並不關心Element
這個類型。
有沒有辦法在Swift 3中實現這一點?