Mit Swift 5 max(_:_:)
und min(_:_:)
sind Teil der Global Numeric Functions . max(_:_:)
hat die folgende Erklärung:
func max<T>(_ x: T, _ y: T) -> T where T : Comparable
Sie können es so verwenden mit Int
s:
let maxInt = max(5, 12) // returns 12
Beachten Sie auch , dass es noch andere Funktionen aufgerufen max(_:_:_:_:)
und min(_:_:_:_:)
das ermöglicht es Ihnen , noch mehr Parameter zu vergleichen. max(_:_:_:_:)
hat die folgende Erklärung:
func max<T>(_ x: T, _ y: T, _ z: T, _ rest: T...) -> T where T : Comparable
Sie können es so verwenden mit Float
s:
let maxInt = max(12.0, 18.5, 21, 26, 32.9, 19.1) // returns 32.9
Mit Swift sind Sie jedoch nicht auf die Verwendung max(_:_:)
und deren Geschwister mit Zahlen beschränkt. In der Tat sind diese Funktionen generisch und können jeden Parametertyp akzeptieren , dass Konform Comparable
Protokoll, kann es sein String
, Character
oder eine der benutzerdefinierten class
oder struct
.
Dabei funktioniert der folgende Playground-Beispielcode einwandfrei:
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"
Wenn Sie das min / max-Element von Elementen abrufen möchten, die sich in einer Array
, a Set
, a Dictionary
oder einer anderen Folge von Comparable
Elementen befinden, können Sie außerdem die Methoden max () oder min () verwenden ( weitere Informationen finden Sie in dieser Antwort zum Stapelüberlauf Einzelheiten).