Junior — Middle
Ποιες συνθήκες και χαρακτηριστικά πρέπει να έχουν τα αντικείμενα ώστε να μπορούν να χρησιμοποιηθούν ως κλειδιά σε ένα λεξικό;
sobes.tech AI
Απάντηση από AI
Για να μπορέσει ένα αντικείμενο να χρησιμοποιηθεί ως κλειδί σε ένα λεξικό (π.χ. σε NSDictionary ή Swift Dictionary), πρέπει να πληροί τις ακόλουθες προϋποθέσεις:
- Hashability: το αντικείμενο πρέπει να έχει μια σωστά υλοποιημένη μέθοδο υπολογισμού του hash (
hashστο Swift,hashValueήhash(into:)), ώστε το λεξικό να μπορεί να βρει γρήγορα το κλειδί. - Συγκρισιμότητα για ισότητα: το αντικείμενο πρέπει να υλοποιεί σωστά τη μέθοδο σύγκρισης ισότητας (
isEqualσε Objective-C,Equatableστο Swift), ώστε το λεξικό να μπορεί να διακρίνει διαφορετικά κλειδιά.
Για παράδειγμα, στο Swift, για να χρησιμοποιήσετε έναν προσαρμοσμένο τύπο ως κλειδί, πρέπει να υλοποιήσετε τα πρωτόκολλα Hashable και Equatable:
struct Person: Hashable {
let id: Int
let name: String
}
var dict: [Person: String] = [:]
dict[Person(id: 1, name: "Alice")] = "Developer"
Έτσι, τα αντικείμενα πρέπει να είναι αμετάβλητα στα πεδία που συμμετέχουν στον υπολογισμό του hash και της σύγκρισης, ώστε τα κλειδιά να παραμένουν σταθερά στο λεξικό.