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 Int
s:
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 Float
s:
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 Comparable
protokol, mungkin saja String
, Character
atau salah satu dari kebiasaan Anda class
atau 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, Array
a, a Set
, Dictionary
atau lainnya Comparable
, Anda dapat menggunakan metode max () atau min () (lihat jawaban Stack Overflow ini untuk informasi selengkapnya detail).