2015-02-09 40 views

回答

1

您可以聲明一個符合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

4

這可以使用泛型來完成和「在哪裏」關鍵字

enum EnumString: String { 
    case A = "test" 
} 

func printEnum<T: RawRepresentable where T.RawValue == String>(arg: T) { 
    print(arg.rawValue) 
} 
printEnum(EnumString.A) //Prints "test" 
相關問題