Swift 5 ile max(_:_:)ve min(_:_:)bir parçası olan Küresel Sayısal Fonksiyonlar . max(_:_:)aşağıdaki beyana sahiptir:
func max<T>(_ x: T, _ y: T) -> T where T : Comparable
Bunu Ints ile şu şekilde kullanabilirsiniz :
let maxInt = max(5, 12)
Ayrıca, adında başka işlevler de olduğunu max(_:_:_:_:)ve min(_:_:_:_:)daha fazla parametreyi karşılaştırmanıza izin veren unutmayın. max(_:_:_:_:)aşağıdaki beyana sahiptir:
func max<T>(_ x: T, _ y: T, _ z: T, _ rest: T...) -> T where T : Comparable
Bunu Floats ile şu şekilde kullanabilirsiniz :
let maxInt = max(12.0, 18.5, 21, 26, 32.9, 19.1)
Ancak Swift ile kullanım max(_:_:)ve kardeşlerini sayılarla sınırlı değilsiniz . Aslında bu fonksiyonlar geneldir ve uymasını herhangi bir parametre türünü kabul edebilir Comparableprotokol, bu olabilir String, Characterya da aramaları özel biri classveya struct.
Bu nedenle, aşağıdaki Playground örnek kodu mükemmel şekilde çalışır:
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)
Ayrıca, bir Array, a Set, a Dictionaryveya başka herhangi bir Comparableöğe dizisinin içindeki öğelerin min / maks öğesini almak istiyorsanız , max () veya min () yöntemlerini kullanabilirsiniz ( daha fazlası için bu Yığın Taşması yanıtına bakın) ayrıntılar).