我试图将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有一个错字。我编辑了这个问题,让我的意图更清晰一点! –