स्विफ्ट 5 के साथ, Array
अन्य की तरह Sequence
प्रोटोकॉल अनुरूप वस्तुओं ( Dictionary
, Set
, आदि), दो तरीकों कहा जाता हैmax()
और max(by:)
जो अनुक्रम में अधिकतम तत्व को वापस करता है या nil
यदि अनुक्रम खाली है।
# 1। का उपयोग करते हुए Array
की max()
विधि
तो करने के लिए अपने अनुक्रम अनुरूप अंदर तत्व प्रकार Comparable
प्रोटोकॉल (यह हो सकता है String
, Float
, Character
या अपने कस्टम वर्ग या struct में से एक), तो आप का उपयोग करने के लिए सक्षम हो जाएगा max()
कि निम्नलिखित है घोषणा :
@warn_unqualified_access func max() -> Element?
अनुक्रम में अधिकतम तत्व देता है।
निम्नलिखित खेल का मैदान कोड का उपयोग करने के लिए दिखा max()
:
let intMax = [12, 15, 6].max()
let stringMax = ["bike", "car", "boat"].max()
print(String(describing: intMax)) // prints: Optional(15)
print(String(describing: stringMax)) // prints: Optional("car")
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 routes = [
Route(distance: 20),
Route(distance: 30),
Route(distance: 10)
]
let maxRoute = routes.max()
print(String(describing: maxRoute)) // prints: Optional(Route with distance: 30)
# 2। का उपयोग करते हुएArray
की max(by:)
विधि
यदि आपके अनुक्रम के अंदर मौजूद तत्व प्रकार Comparable
प्रोटोकॉल के अनुरूप नहीं है, तो आपको max(by:)
निम्नलिखित घोषणा करने के लिए उपयोग करना होगा :
@warn_unqualified_access func max(by areInIncreasingOrder: (Element, Element) throws -> Bool) rethrows -> Element?
अनुक्रम में अधिकतम तत्व देता है, दिए गए विधेय का उपयोग तत्वों के बीच तुलना के रूप में करता है।
निम्नलिखित खेल का मैदान कोड का उपयोग करने के लिए दिखा max(by:)
:
let dictionary = ["Boat" : 15, "Car" : 20, "Bike" : 40]
let keyMaxElement = dictionary.max(by: { (a, b) -> Bool in
return a.key < b.key
})
let valueMaxElement = dictionary.max(by: { (a, b) -> Bool in
return a.value < b.value
})
print(String(describing: keyMaxElement)) // prints: Optional(("Car", 20))
print(String(describing: valueMaxElement)) // prints: Optional(("Bike", 40))
class Route: CustomStringConvertible {
let distance: Int
var description: String { return "Route with distance: \(distance)" }
init(distance: Int) {
self.distance = distance
}
}
let routes = [
Route(distance: 20),
Route(distance: 30),
Route(distance: 10)
]
let maxRoute = routes.max(by: { (a, b) -> Bool in
return a.distance < b.distance
})
print(String(describing: maxRoute)) // prints: Optional(Route with distance: 30)