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 (
hashSwiftben,hashValuevagyhash(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 (
isEqualObjective-C-ben,EquatableSwiftben), 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.