Dengan Swift 5, max(_:_:)dan min(_:_:)merupakan bagian dari Fungsi Numerik Global . max(_:_:)memiliki deklarasi berikut:
func max<T>(_ x: T, _ y: T) -> T where T : Comparable
Anda dapat menggunakannya seperti ini dengan Ints:
let maxInt = max(5, 12) // returns 12
Perhatikan juga bahwa ada fungsi lain yang dipanggil max(_:_:_:_:)dan min(_:_:_:_:)memungkinkan Anda membandingkan lebih banyak parameter. max(_:_:_:_:)memiliki deklarasi berikut:
func max<T>(_ x: T, _ y: T, _ z: T, _ rest: T...) -> T where T : Comparable
Anda dapat menggunakannya seperti ini dengan Floats:
let maxInt = max(12.0, 18.5, 21, 26, 32.9, 19.1) // returns 32.9
Namun dengan Swift, Anda tidak dibatasi untuk menggunakan max(_:_:)dan saudara kandungnya dengan angka. Faktanya, fungsi tersebut bersifat umum dan dapat menerima jenis parameter apa pun yang sesuai dengan Comparableprotokol, mungkin saja String, Characteratau salah satu dari kebiasaan Anda classatau struct.
Dengan demikian, kode contoh Playground berikut berfungsi dengan sempurna:
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"
Selain itu, jika Anda ingin mendapatkan elemen min / max elemen yang ada di dalam rangkaian elemen, Arraya, a Set, Dictionaryatau lainnya Comparable, Anda dapat menggunakan metode max () atau min () (lihat jawaban Stack Overflow ini untuk informasi selengkapnya detail).