Sobes.tech
Junior — Middle

Kokios sąlygos ir savybės turi būti objektuose, kad juos būtų galima naudoti kaip raktus žodyne?

sobes.tech AI

Atsakymas iš AI

Kad objektas gali būti naudojamas kaip raktas žodyne (pavyzdžiui, NSDictionary arba Swift Dictionary), jis turi atitikti šias sąlygas:

  • Hashable: objektas turi turėti teisingai įgyvendintą hash skaičiavimo metodą (hash Swift, hashValue arba hash(into:)), kad žodynas galėtų greitai rasti raktą.
  • Lygumo palyginimas: objektas turi teisingai įgyvendinti lygumo palyginimo metodą (isEqual Objective-C, Equatable Swift), kad žodynas galėtų atskirti skirtingus raktus.

Pavyzdžiui, Swift, norint naudoti savo tipą kaip raktą, reikia įgyvendinti Hashable ir Equatable protokolus:

struct Person: Hashable {
    let id: Int
    let name: String
}

var dict: [Person: String] = [:]
dict[Person(id: 1, name: "Alice")] = "Developer"

Taip pat, objektai turi būti nekeičiami tose srityse, kurios dalyvauja hash skaičiavime ir palyginime, kad raktai liktų stabili žodyne.