Sobes.tech
Back to questions
Junior — Middle
70

Какие шаги необходимо предпринять, чтобы реализовать соответствие структуры протоколу Equatable в Swift?

Companies where asked
KTS

Answer from AI

sobes.tech AI

Чтобы структура в Swift соответствовала протоколу Equatable, нужно:

  1. Объявить соответствие протокола в объявлении структуры.
  2. Реализовать функцию ==, которая сравнивает два экземпляра структуры на равенство.

Начиная с Swift 4.1, компилятор может автоматически сгенерировать реализацию == для структур, если все их свойства также соответствуют Equatable.

Пример:

struct Point: Equatable {
    var x: Int
    var y: Int
}

// Автоматически сгенерированная реализация:
// static func == (lhs: Point, rhs: Point) -> Bool {
//     return lhs.x == rhs.x && lhs.y == rhs.y
// }

let p1 = Point(x: 1, y: 2)
let p2 = Point(x: 1, y: 2)
print(p1 == p2) // true

Если нужно кастомное сравнение, можно реализовать оператор самостоятельно:

struct Person: Equatable {
    var name: String
    var age: Int

    static func == (lhs: Person, rhs: Person) -> Bool {
        return lhs.name.lowercased() == rhs.name.lowercased() && lhs.age == rhs.age
    }
}