Junior — Middle
Πώς υλοποιείται η μοναδικότητα των στοιχείων μέσα σε μια συλλογή τύπου Set;
sobes.tech AI
Απάντηση από AI
Στην iOS, η συλλογή Set διασφαλίζει τη μοναδικότητα των στοιχείων μέσω της χρήσης hashing και σύγκρισης ισότητας.
Κάθε στοιχείο στο Set πρέπει να συμμορφώνεται με το πρωτόκολλο Hashable, το οποίο απαιτεί την υλοποίηση:
- της μεθόδου
hash(into:)— για τον υπολογισμό του κωδικού hash του στοιχείου; - του τελεστή
==— για τον έλεγχο της ισότητας δύο στοιχείων.
Όταν προσθέτετε ένα στοιχείο στο Set, το σύστημα υπολογίζει το hash του και ελέγχει αν υπάρχει ήδη ένα στοιχείο με το ίδιο hash και την ίδια ισότητα. Αν ναι, το στοιχείο δεν προστίθεται, διασφαλίζοντας τη μοναδικότητα.
Παράδειγμα:
struct Person: Hashable {
let id: Int
let name: String
}
var people = Set<Person>()
people.insert(Person(id: 1, name: "Alice"))
people.insert(Person(id: 1, name: "Alice")) // δεν θα προστεθεί, καθώς ήδη υπάρχει τέτοιο στοιχείο
Έτσι, η μοναδικότητα στο Set επιτυγχάνεται μέσω hashing και σύγκρισης στοιχείων.