在Swift中枚举?

时间:2019-03-20 20:49:52

标签: swift

我可以在Swift中用枚举值替换String变量吗? 例如:

let machineWin = "MACHINE WIN!!!"
let userWin = "USER WIN!!!"
let noneWin = "IT'S A TIE!!!"

如果我想用枚举替换那些常量

2 个答案:

答案 0 :(得分:1)

在Swift中ordinal没有内置的可比选项。

您可以使用CaseIterable来获取enum的{​​{1}}值。

index

有关更多信息,请参见The Swift Programming Language: Enumeration

答案 1 :(得分:1)

我个人将创建一个简单的枚举。但是我不会倾向于给这个枚举一个String raw value。如果有的话,这些似乎是用户界面的消息。我会将它们移到某些计算的属性中(如果您选择为游戏选择一种以上的语言,我们也可能将其本地化)。

enum Winner { 
    case machine
    case user
    case tie
}

extension Winner {
    var localizedMessage: String { 
        switch self {
            case .machine: return NSLocalizedString("MACHINE WIN!!!", comment: "Winner")
            case .user:    return NSLocalizedString("USER WIN!!!",    comment: "Winner")
            case .tie:     return NSLocalizedString("IT'S A TIE!!!",  comment: "Winner")
        }
    }
}