访问 Swift 中数组中枚举的原始值

Access rawValue of enum in array in Swift

我正在尝试使用 maxElement 处理数组中的枚举,由 .rawValue 访问,如下例所示:

var planets: [Planets] = [.Mars, .Earth, .Jupiter]
maxElement(planets.rawValue)

我可以只使用其他方法来获取最大 rawValue,但如果可以这样使用它会非常好和容易,但它甚至可能吗?

没有直接的方法。

let maxPlanet = Planets(rawValue: maxElement(planets.map({[=10=].rawValue})))!

你必须:

  1. 制作一个 rawValues
  2. 的数组
  3. 从中得到maxElement
  4. 使用 Planets(rawValue:)
  5. 转换回枚举

遵守 Comparable 协议以将 maxElement 与您的枚举一起使用。

enum Planets: Int, Comparable {
    case Earth, Mars, Jupiter
}

func <(lhs: Planets, rhs: Planets) -> Bool {
    return lhs.rawValue < rhs.rawValue
}

然后

let planets: [Planets] = [.Mars, .Jupiter, .Earth]
let maxPlanet = maxElement(planets) // .Jupiter