我正在尝试编写一个函数,该函数接受CustomStringConvertible可以RawRepresentable的任何值。我试着写这个:
enum MyEnum: String {
case a = "someString"
}
func myFunction<R: RawRepresentable>(val: R) where R.RawValue == CustomStringConvertible {
print(val.rawValue.description)
}
myFunction(val: MyEnum.a)
但是出现以下错误:
Global function 'myFunction(val:)' requires the types 'String' and 'CustomStringConvertible' be equivalent
这很奇怪,因为String
确实符合CustomStringConvertible
。
将RawValue
调整为仅String
即可,但是,我想与其他CustomStringConvertible
一起使用。
为什么不编译,有什么方法可以实现?
您应该说它符合协议
where R.RawValue: CustomStringConvertible