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