泛型类的扩展

问题描述

我上课

class MyClass<T> { /***/ }

我要扩展的内容:

extension MyClass where T: Codable & RawRepresentable & CaseIterable { /***/ }

我想限制对String类型的RawValues的扩展,所以我试图做类似的事情:

extension MyClass where T: Codable & RawRepresentable & CaseIterable,RawValue == String { 
   func doSomething() {
      print("doing something with strings!")
   }
}

这当然不起作用,但是有办法使它起作用吗?

尽可能地明确将很有帮助

解决方法

您的语法略有错误。 RawValue属于T,因此您需要使用以下方式进行引用:

extension MyClass where T: Codable & RawRepresentable & CaseIterable,T.RawValue == String { ... }
                        ^^

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...