Equatable va Comparable
Swift Equatable va Comparable
Tiplaringiz == va tartiblash amallarini qo‘llab-quvvatlashi uchun Equatable va Comparable protokollarini qabul qiling.
Avtomatik va maxsus moslik
Hosila (derived) tiplar moslikni avtomatik ravishda meros qilib oladi, maxsus moslik esa aniq realizatsiyani talab qiladi.
Misol
struct Point: Equatable, Comparable {
var x: Int, y: Int
static func == (lhs: Point, rhs: Point) -> Bool { lhs.x == rhs.x && lhs.y == rhs.y }
static func < (lhs: Point, rhs: Point) -> Bool { (lhs.x, lhs.y) < (rhs.x, rhs.y) }
}
let a = Point(x: 1, y: 2), b = Point(x: 1, y: 3)
print(a == b) // false
print(a < b) // true
Comparable yordamida saralash
Maxsus tiplarni saralash va min()/max() dan foydalanish uchun Comparable protokoliga moslashing.
Misol
struct Score: Comparable {
let user: String
let value: Int
static func < (l: Score, r: Score) -> Bool { l.value < r.value }
}
let scores = [Score(user: "A", value: 10), Score(user: "B", value: 5), Score(user: "C", value: 7)]
let sorted = scores.sorted()
print(sorted.map { $0.value })
print(sorted.last!.value)
W3Schools Pathfinder
Yutuqlaringizni kuzating – bu bepul!
