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.