সুইফট 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)