Sobes.tech
Intern

Τι είναι ένα hash (HASH) στη Ruby;

sobes.tech AI

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

Το Hash (Hash) στη Ruby είναι μια διατεταγμένη συλλογή από ζεύγη "κλειδί-τιμή", όπου κάθε μοναδικό κλειδί συνδέεται με μια συγκεκριμένη τιμή. Τα κλειδιά είναι συνήθως σύμβολα (Symbol) ή συμβολοσειρές (String), αλλά μπορούν να είναι οποιοδήποτε αντικείμενο που υλοποιεί τις μεθόδους eql? και hash.

Χαρακτηριστικά του hash:

  • Ταξινόμηση: Από τη Ruby 1.9, τα hash διατηρούν τη σειρά εισαγωγής των στοιχείων.
  • Πρόσβαση μέσω κλειδιού: Η πρόσβαση στις τιμές γίνεται γρήγορα μέσω του αντίστοιχου κλειδιού.
  • Δυναμικό μέγεθος: Τα hash μπορούν να επεκταθούν ή να συρρικνωθούν καθώς προστίθενται ή αφαιρούνται στοιχεία.
  • Χωρίς διπλά κλειδιά: Κάθε κλειδί είναι μοναδικό εντός ενός hash.

Παραδείγματα δημιουργίας hash:

# Χρήση λογιότυπου
άτομο = { "όνομα" => "Αλίκη", "ηλικία" => 30 }

# Χρήση συμβόλων ως κλειδιά (πιο συνηθισμένος και αποδοτικός τρόπος)
ρυθμίσεις = { :θέμα => "σκοτεινό", :γλώσσα => "ru" }

# Σημειωτική σε στυλ ζεύγους κλειδιού-τιμής (Ruby 1.9+)
ρυθμίσεις = { host: "localhost", port: 8080 }

# Με τον κατασκευαστή Hash.new
άδειο_hash = Hash.new

Βασικές λειτουργίες με hash:

Ενέργεια Παράδειγμα Περιγραφή
Πρόσβαση σε τιμή άτομο["όνομα"] Επιστρέφει την τιμή για το κλειδί "όνομα"
Προσθήκη/αλλαγή άτομο["πόλη"] = "Νέα Υόρκη" Προσθέτει ή αλλάζει το ζεύγος κλειδιού-τιμής
Διαγραφή άτομο.delete("ηλικία") Διαγράφει το ζεύγος με το κλειδί "ηλικία"
Μέγεθος άτομο.size ή άτομο.length Επιστρέφει τον αριθμό των ζευγών στο hash
Έλεγχος κλειδιού άτομο.key?("όνομα") Ελέγχει αν το κλειδί υπάρχει στο hash
Έλεγχος τιμής άτομο.value?(30) Ελέγχει αν η τιμή υπάρχει στο hash
Επανάληψη `άτομο.each { κλειδί, τιμή
Κλειδιά άτομο.keys Επιστρέφει έναν πίνακα με όλα τα κλειδιά
Τιμές άτομο.values Επιστρέφει έναν πίνακα με όλες τις τιμές

Παράδειγμα χρήσης:

δεδομένα_χρήστη = {
  όνομα: "Boris",
  ηλικία: 45,
  πόλη: "Μόσχα"
}

# Πρόσβαση σε δεδομένα
puts δεδομένα_χρήστη[:όνομα]   # => Boris

# Προσθήκη νέου πεδίου
δεδομένα_χρήστη[:δουλειά] = "Προγραμματιστής"

# Αλλαγή τιμής
δεδομένα_χρήστη[:ηλικία] = 46

# Διαγραφή πεδίου
δεδομένα_χρήστη.delete(:πόλη)

# Επανάληψη στο hash
δεδομένα_χρήστη.each do |κλειδί, τιμή|
  puts "#{κλειδί}: #{τιμή}"
end