সুইফট 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:)
যদি আপনার সংগ্রহ জায়গায় জায়গায় সাজানোর প্রয়োজন হয়।