我试图将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方法公开给那些具有ErrorTypeasAppError.NonError的方法(这是自定义类型)

最佳答案

这完全取决于你想达到的目标,但简而言之并不是真的。类型检查器(和协议一致性检查)发生在编译时,枚举的情况通常只在运行时才知道。
可以在协议扩展中定义对整个枚举进行操作的方法,但对于其他情况,可以返回nil(或不执行任何操作)。

10-08 05:32
查看更多