我試圖將extension
限制爲而僅限於case
的enum
。將協議擴展限制爲單枚舉枚舉
例如,這編譯:
extension FooProtocol where T == SomeEnum {}
但這並不:
extension FooProtocol where T == SomeEnum.CaseOne {}
我明白,這是不可能的,因爲在case
enum
本身不能被表示爲一個type
。
有沒有解決這個問題的方法?
編輯:
我的情況是類似以下內容:
extension SignalProducerType where E == AppError.NonError {
func ignoreError() -> SignalProducer<T, NoError> {}
}
我想揭露ignoreError
方法僅適用於那些有一個ErrorType
爲AppError.NonError
(這是自定義的類型)
你的第一個例子不能編譯。也許你的意思就像你之前的問題中的'extension FooProtocol where T == SomeEnum {}'那樣? - 我必須承認,我不清楚你想達到什麼目的(也許是因爲我不認識斯卡拉:)。 'SomeEnum.CaseOne'是'SomeEnum'類型的一個可能的*值,而不是一個類型。 –
@MartinR有一個錯字。我編輯了這個問題,讓我的意圖更清晰一點! –