সুইফট 5 দিয়ে, Array, অন্যান্য মত Sequenceপ্রোটোকল অনুসারী বস্তু ( Dictionary, Set, ইত্যাদি), দুটি পদ্ধতি বলা max()এবং max(by:)যে ফিরতি ক্রমানুসারে সর্বোচ্চ উপাদান বা nilক্রম খালি পারেন।
# 1। Arrayএর max()পদ্ধতি ব্যবহার করে
যদি আপনার ক্রম কে কনর্ফাম করে ভিতরে উপাদান টাইপ Comparableপ্রটোকল (এটা হতে পারে String, Float, Characterঅথবা আপনার কাস্টম বর্গ বা struct হয় এক), আপনি ব্যবহার করতে সক্ষম হবে max()যে নিম্নলিখিত হয়েছে ঘোষণা :
@warn_unqualified_access func max() -> Element?
ক্রমের সর্বোচ্চ উপাদানটি প্রদান করে maximum
নিম্নলিখিত খেলার মাঠের কোডগুলি ব্যবহার করতে দেখায় 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)