4
是否有可能有一个函数,允许任何枚举的rawValue是某种类型?例如,任何具有字符串rawValue的枚举。是否有可能为特定类型的枚举声明swift通用?
是否有可能有一个函数,允许任何枚举的rawValue是某种类型?例如,任何具有字符串rawValue的枚举。是否有可能为特定类型的枚举声明swift通用?
您可以声明一个符合RawRepresentable
类型的泛型,该类型是所有枚举声明原始rawValue符合的协议。
enum EnumA: Int {
case A = 0
}
enum EnumB {
case A
}
func doGenericSomething<T: RawRepresentable>(arg: T) {
println(arg.rawValue)
}
doGenericSomething(EnumA.A) //OK
doGenericSomething(EnumB.A) //Error! Does not conform to protocol RawRepresentable
但是,您不能在泛型中指定枚举的rawValue类型。有关信息,您可以看到帖子here。
这可以使用泛型来完成和“在哪里”关键字
enum EnumString: String {
case A = "test"
}
func printEnum<T: RawRepresentable where T.RawValue == String>(arg: T) {
print(arg.rawValue)
}
printEnum(EnumString.A) //Prints "test"