有没有办法将枚举 rawValue 向下转换为它的类型?
Is there a way to down cast an enum rawValue to its type?
我有以下枚举:
enum Difficulty: Int {
case Opt1 = 1, Opt2 = 2, Opt3 = 3
}
当我尝试像这样将它用作 Int 时:MyClass.Difficulty.Opt1.rawValue
它不允许我这样做,因为它 returns 是一个 RawValue。
理解这是一个 Int 不是很聪明吗?
根据你的代码,我假设你有一个嵌套在 class 中的枚举,如下所示:
class MyClass {
enum Difficulty: Int {
case Opt1 = 1, Opt2 = 2, Opt3 = 3
}
}
var myInteger = MyClass.Difficulty.Opt2.rawValue // Int inferred correctly
我没有发现这个或我能想到的任何变体有任何问题。如果您仍然遇到问题,请 post 您的 MyClass 类型的代码。
如果你想将它传递给一个函数:
func someFunction(difficulty: MyClass.Difficulty) {
let number = difficulty.rawValue
}
someFunction(.Opt1)
或
fun someFunction(difficulty: Int) {
let number = difficulty
}
someFunction(MyClass.Difficulty.Opt1.rawValue)
我有以下枚举:
enum Difficulty: Int {
case Opt1 = 1, Opt2 = 2, Opt3 = 3
}
当我尝试像这样将它用作 Int 时:MyClass.Difficulty.Opt1.rawValue
它不允许我这样做,因为它 returns 是一个 RawValue。
理解这是一个 Int 不是很聪明吗?
根据你的代码,我假设你有一个嵌套在 class 中的枚举,如下所示:
class MyClass {
enum Difficulty: Int {
case Opt1 = 1, Opt2 = 2, Opt3 = 3
}
}
var myInteger = MyClass.Difficulty.Opt2.rawValue // Int inferred correctly
我没有发现这个或我能想到的任何变体有任何问题。如果您仍然遇到问题,请 post 您的 MyClass 类型的代码。
如果你想将它传递给一个函数:
func someFunction(difficulty: MyClass.Difficulty) {
let number = difficulty.rawValue
}
someFunction(.Opt1)
或
fun someFunction(difficulty: Int) {
let number = difficulty
}
someFunction(MyClass.Difficulty.Opt1.rawValue)