有没有办法将枚举 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)