Sobes.tech
Junior — Middle

Milyen feltételeknek és jellemzőknek kell megfelelniük a tárgyaknak ahhoz, hogy kulcsként használhatók legyenek egy szótárban?

sobes.tech MI

Válasz az MI-től

Annak érdekében, hogy egy objektum kulcsként használható legyen szótárban (például NSDictionary vagy Swift Dictionary), az alábbi feltételeknek kell megfelelnie:

  • Hashelhetőség: az objektumnak helyesen implementált hash-kiszámítási módszerrel kell rendelkeznie (hash Swiftben, hashValue vagy hash(into:)), hogy a szótár gyorsan megtalálja a kulcsot.
  • Egyenlőség szerinti összehasonlítás: az objektumnak helyesen kell implementálnia az egyenlőség szerinti összehasonlítási módszert (isEqual Objective-C-ben, Equatable Swiftben), hogy a szótár meg tudja különböztetni a különböző kulcsokat.

Például Swiftben, ha egy egyedi típust szeretnénk kulcsként használni, akkor implementálni kell a Hashable és Equatable protokollokat:

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

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

Így az objektumoknak változatlannak kell lenniük a hash és összehasonlítás során részt vevő mezőkben, hogy a kulcsok stabilak maradjanak a szótárban.