访问 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})))!
你必须:
- 制作一个
rawValue
s 的数组
- 从中得到
maxElement
。
- 使用
Planets(rawValue:)
转换回枚举
遵守 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
我正在尝试使用 maxElement
处理数组中的枚举,由 .rawValue 访问,如下例所示:
var planets: [Planets] = [.Mars, .Earth, .Jupiter]
maxElement(planets.rawValue)
我可以只使用其他方法来获取最大 rawValue,但如果可以这样使用它会非常好和容易,但它甚至可能吗?
没有直接的方法。
let maxPlanet = Planets(rawValue: maxElement(planets.map({[=10=].rawValue})))!
你必须:
- 制作一个
rawValue
s 的数组
- 从中得到
maxElement
。 - 使用
Planets(rawValue:)
转换回枚举
遵守 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