स्विफ्ट 5 के साथ, Array
दो तरीके हैं जिन्हें बुलाया गया है sorted()
और sorted(by:)
। पहली विधि, sorted()
निम्नलिखित घोषणा है:
संग्रह के तत्वों को वापस लौटाता है।
func sorted() -> [Element]
दूसरी विधि, sorted(by:)
में निम्नलिखित घोषणा है:
संग्रह के तत्वों को देता है, तत्वों के बीच तुलना के रूप में दिए गए विधेय का उपयोग करके सॉर्ट किया जाता है।
func sorted(by areInIncreasingOrder: (Element, Element) throws -> Bool) rethrows -> [Element]
# 1। तुलनीय वस्तुओं के लिए आरोही क्रम के साथ क्रमबद्ध करें
यदि आपके संग्रह के अंदर मौजूद तत्व प्रकार Comparable
प्रोटोकॉल के अनुरूप है , तो आप sorted()
अपने तत्वों को आरोही क्रम से क्रमबद्ध करने के लिए उपयोग कर पाएंगे । निम्नलिखित खेल का मैदान कोड दिखाता है कि कैसे उपयोग किया जाए sorted()
:
class ImageFile: CustomStringConvertible, Comparable {
let fileName: String
let fileID: Int
var description: String { return "ImageFile with ID: \(fileID)" }
init(fileName: String, fileID: Int) {
self.fileName = fileName
self.fileID = fileID
}
static func ==(lhs: ImageFile, rhs: ImageFile) -> Bool {
return lhs.fileID == rhs.fileID
}
static func <(lhs: ImageFile, rhs: ImageFile) -> Bool {
return lhs.fileID < rhs.fileID
}
}
let images = [
ImageFile(fileName: "Car", fileID: 300),
ImageFile(fileName: "Boat", fileID: 100),
ImageFile(fileName: "Plane", fileID: 200)
]
let sortedImages = images.sorted()
print(sortedImages)
/*
prints: [ImageFile with ID: 100, ImageFile with ID: 200, ImageFile with ID: 300]
*/
# 2। तुलनीय वस्तुओं के लिए अवरोही क्रम के साथ क्रमबद्ध करें
यदि आपके संग्रह के अंदर मौजूद तत्व प्रकार Comparable
प्रोटोकॉल के अनुरूप है , तो आपको sorted(by:)
अपने तत्वों को अवरोही क्रम से क्रमबद्ध करने के लिए उपयोग करना होगा ।
class ImageFile: CustomStringConvertible, Comparable {
let fileName: String
let fileID: Int
var description: String { return "ImageFile with ID: \(fileID)" }
init(fileName: String, fileID: Int) {
self.fileName = fileName
self.fileID = fileID
}
static func ==(lhs: ImageFile, rhs: ImageFile) -> Bool {
return lhs.fileID == rhs.fileID
}
static func <(lhs: ImageFile, rhs: ImageFile) -> Bool {
return lhs.fileID < rhs.fileID
}
}
let images = [
ImageFile(fileName: "Car", fileID: 300),
ImageFile(fileName: "Boat", fileID: 100),
ImageFile(fileName: "Plane", fileID: 200)
]
let sortedImages = images.sorted(by: { (img0: ImageFile, img1: ImageFile) -> Bool in
return img0 > img1
})
//let sortedImages = images.sorted(by: >) // also works
//let sortedImages = images.sorted { $0 > $1 } // also works
print(sortedImages)
/*
prints: [ImageFile with ID: 300, ImageFile with ID: 200, ImageFile with ID: 100]
*/
# 3। गैर-तुलनीय वस्तुओं के लिए आरोही या अवरोही क्रम के साथ क्रमबद्ध करें
यदि आपके संग्रह के अंदर मौजूद तत्व प्रकार Comparable
प्रोटोकॉल के अनुरूप नहीं है, तो आपको sorted(by:)
अपने तत्वों को आरोही या अवरोही क्रम से क्रमबद्ध करने के लिए उपयोग करना होगा ।
class ImageFile: CustomStringConvertible {
let fileName: String
let fileID: Int
var description: String { return "ImageFile with ID: \(fileID)" }
init(fileName: String, fileID: Int) {
self.fileName = fileName
self.fileID = fileID
}
}
let images = [
ImageFile(fileName: "Car", fileID: 300),
ImageFile(fileName: "Boat", fileID: 100),
ImageFile(fileName: "Plane", fileID: 200)
]
let sortedImages = images.sorted(by: { (img0: ImageFile, img1: ImageFile) -> Bool in
return img0.fileID < img1.fileID
})
//let sortedImages = images.sorted { $0.fileID < $1.fileID } // also works
print(sortedImages)
/*
prints: [ImageFile with ID: 300, ImageFile with ID: 200, ImageFile with ID: 100]
*/
नोट स्विफ्ट ने दो तरीकों कहा जाता है प्रदान करता है कि sort()
और sort(by:)
के समकक्षों के रूप में sorted()
और sorted(by:)
आप इन-जगह अपने संग्रह सॉर्ट करने के लिए की जरूरत है।