Sobes.tech
Junior — Middle

Használható-e egy objektum kulcsként egy Dictionary vagy hasonló adatstruktúrában?

sobes.tech MI

Válasz az MI-től

iOS-en (Swift vagy Objective-C) objektumokat kulcsként használhatunk szótárakban (Dictionary), de az objektumnak bizonyos követelményeknek kell megfelelnie.

Swift-ben a szótár kulcsainak megfelelniük kell a Hashable protokollnak, azaz az objektumnak helyesen kell implementálnia a hash és az egyenlőség összehasonlító metódusokat. Ez szükséges ahhoz, hogy a szótár hatékonyan tudja tárolni és keresni az értékeket a kulcsok alapján.

Egyéni objektum kulcsként való használatának példája:

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

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

Ha az objektum nem valósítja meg a Hashable-t, nem használható kulcsként. Objective-C-ben a szótár kulcsainak olyan objektumoknak kell lenniük, amelyek megvalósítják a -hash és -isEqual: metódusokat.

Így az objektumok kulcsként való használata akkor lehetséges, ha helyesen valósítják meg a hash-elést és az összehasonlítást.