Sobes.tech
Junior — Middle

Swift тилинде Hashable жана Equatable протоколдору кандай байланышта?

sobes.tech AI

AIден жооп

Swiftте, Equatable жана Hashable протоколдору тыгыз байланышта, анткени Hashable, Equatableдан мурас алат.

  • Equatable эки үлгүнү теңдик боюнча салыштыруу үчүн == операторун ишке ашырууну талап кылат.
  • Hashable Equatable кеңейтет жана объекттин хеш кодуна кайта турган hashValue (же hash(into:)) мүлкүн ишке ашырууну талап кылат.

Байланыш — объекттин хеш кодун эсептөө үчүн, объекттерди теңдик боюнча салыштыруу мүмкүнчүлүгү болушу керек, ошондуктан хешке негизделген коллекциялар (мисалы, Set же Dictionary) туура иштейт.

Мисал:

struct Person: Hashable {
    var id: Int
    var name: String

    static func == (lhs: Person, rhs: Person) -> Bool {
        return lhs.id == rhs.id
    }

    func hash(into hasher: inout Hasher) {
        hasher.combine(id)
    }
}

Бул жерде, Person Equatable жана Hashable протоколдорунан ылайык келет жана аны хеш таблицаларда колдонууга болот.