Con Swift 5 max(_:_:)
y min(_:_:)
son parte de las funciones numéricas globales . max(_:_:)
tiene la siguiente declaración:
func max<T>(_ x: T, _ y: T) -> T where T : Comparable
Puedes usarlo así con Int
s:
let maxInt = max(5, 12) // returns 12
También tenga en cuenta que hay otras funciones llamadas max(_:_:_:_:)
y min(_:_:_:_:)
que le permite comparar aún más parámetros. max(_:_:_:_:)
tiene la siguiente declaración:
func max<T>(_ x: T, _ y: T, _ z: T, _ rest: T...) -> T where T : Comparable
Puedes usarlo así con Float
s:
let maxInt = max(12.0, 18.5, 21, 26, 32.9, 19.1) // returns 32.9
Sin embargo, con Swift, no está limitado al uso max(_:_:)
y sus hermanos con números. De hecho, esas funciones son genéricas y pueden aceptar cualquier tipo de parámetro que se ajuste al Comparable
protocolo, ya sea String
, Character
uno de sus personalizados class
o struct
.
Por lo tanto, el siguiente código de muestra de Playground funciona perfectamente:
class Route: Comparable, CustomStringConvertible {
let distance: Int
var description: String {
return "Route with distance: \(distance)"
}
init(distance: Int) {
self.distance = distance
}
static func ==(lhs: Route, rhs: Route) -> Bool {
return lhs.distance == rhs.distance
}
static func <(lhs: Route, rhs: Route) -> Bool {
return lhs.distance < rhs.distance
}
}
let route1 = Route(distance: 4)
let route2 = Route(distance: 8)
let maxRoute = max(route1, route2)
print(maxRoute) // prints "Route with distance: 8"
Además, si desea obtener el elemento min / max de los elementos que están dentro de una Array
, a Set
, a Dictionary
o cualquier otra secuencia de Comparable
elementos, puede usar los métodos max () o min () (consulte esta respuesta de Stack Overflow para obtener más información) detalles).