Equatable va Comparable


ULASHISH

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

O‘zingiz sinab ko‘ring »



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)

O‘zingiz sinab ko‘ring »



W3Schools Pathfinder

Yutuqlaringizni kuzating – bu bepul!