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"