我试图仅将if($fil !~ m/^\.+/i)
{
your stuff here
}
限制为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
为AppError.NonError
(自定义类型)的方法
答案 0 :(得分:2)
这取决于你想要实现的目标,但简而言之并非如此。类型检查器(和协议一致性检查)在编译时发生,枚举的情况通常只在运行时知道。
您可以在协议扩展中定义方法以对整个枚举进行操作,但对其他情况返回nil(或不执行任何操作)。