我试图将extension
限制为protocol
仅限于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
asAppError.NonError
的方法(这是自定义类型) 最佳答案
这完全取决于你想达到的目标,但简而言之并不是真的。类型检查器(和协议一致性检查)发生在编译时,枚举的情况通常只在运行时才知道。
可以在协议扩展中定义对整个枚举进行操作的方法,但对于其他情况,可以返回nil(或不执行任何操作)。