我尝试使用maxElement
处理数组中的枚举,由.rawValue访问,如下例所示:
var planets: [Planets] = [.Mars, .Earth, .Jupiter]
maxElement(planets.rawValue)
我可以使用其他方法来获取最大的rawValue,但是如果可以这样使用它会非常简单,但它是否可能?
答案 0 :(得分:2)
没有直接的方法。
let maxPlanet = Planets(rawValue: maxElement(planets.map({$0.rawValue})))!
你必须:
rawValue
s maxElement
。Planets(rawValue:)
答案 1 :(得分:2)
符合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