Sobes.tech
Junior — Middle

Πώς να προσδιορίσετε τον σωστό τύπο κλειδιού για χρήση σε ένα λεξικό;

sobes.tech AI

Απάντηση από AI

Στο iOS (Swift), το κλειδί για ένα λεξικό πρέπει να συμμορφώνεται με το πρωτόκολλο Hashable. Αυτό σημαίνει ότι το κλειδί πρέπει να μπορεί να υπολογίζει μια τιμή hash και να συγκρίνεται για ισότητα, ώστε το λεξικό να μπορεί να αποθηκεύει και να αναζητά αποτελεσματικά τις τιμές.

Για παράδειγμα, τύποι όπως το String, Int, UUID ήδη υλοποιούν το Hashable και είναι κατάλληλοι για χρήση ως κλειδιά.

Αν δημιουργείτε έναν δικό σας τύπο για το κλειδί, πρέπει να υλοποιήσετε το πρωτόκολλο Hashable:

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

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

Επομένως, ο σωστός τύπος κλειδιού είναι αυτός που:

  • υλοποιεί το Hashable;
  • έχει μοναδικές τιμές για τα κλειδιά, για να αποφεύγονται οι συγκρούσεις;
  • είναι αμετάβλητος (είναι καλύτερο να χρησιμοποιείτε δομές ή αμετάβλητα χαρακτηριστικά).