Intern
Mi az a hash (HASH) a Ruby-ben?
sobes.tech MI
Válasz az MI-től
Ruby-ban a Hash (Hash) egy rendezett "kulcs-érték" párokból álló gyűjtemény, ahol minden egyedi kulcs egy adott értékhez van kötve. A kulcsok általában szimbólumok (Symbol) vagy sztringek (String), de lehetnek bármilyen objektumok, amelyek megvalósítják az eql? és hash metódusokat.
A hash jellemzői:
- Rendezett: A Ruby 1.9 óta a hash-ek megőrzik az elemek beszúrási sorrendjét.
- Gyors hozzáférés kulcs szerint: Az értékekhez gyorsan hozzáférhetünk a megfelelő kulcs segítségével.
- Dinamikus méret: A hash-ek bővíthetők vagy szűkíthetők az elemek hozzáadásával vagy eltávolításával.
- Egyedi kulcsok: Minden kulcs egy hash-en belül egyedi.
Hash létrehozásának példái:
# Literál használata
szemely = { "nev" => "Alice", "kor" => 30 }
# Szimbólumok kulcsként (gyakoribb és hatékonyabb módszer)
beallitasok = { :tema => "sötét", :nyelv => "ru" }
# Szabványos kulcs-érték szintaxis (Ruby 1.9+)
konfig = { host: "localhost", port: 8080 }
# Hash.new konstruktorral
ures_hash = Hash.new
Fő műveletek hash-ekkel:
| Művelet | Példa | Leírás |
|---|---|---|
| Érték elérése | szemely["nev"] |
Visszaadja a "nev" kulcshoz tartozó értéket |
| Hozzáadás/módosítás | szemely["varos"] = "New York" |
Hozzáad vagy módosít egy kulcs-érték párt |
| Törlés | szemely.delete("kor") |
Törli a "kor" kulcsú párt |
| Méret | szemely.size vagy szemely.length |
Visszaadja a hashben lévő párok számát |
| Kulcs ellenőrzése | szemely.key?("nev") |
Ellenőrzi, hogy a kulcs létezik-e a hash-ben |
| Érték ellenőrzése | szemely.value?(30) |
Ellenőrzi, hogy az érték létezik-e a hash-ben |
| Iterálás | `szemely.each { | kulcs, ertek |
| Kulcsok | szemely.keys |
Visszaadja az összes kulcsot tartalmazó tömböt |
| Értékek | szemely.values |
Visszaadja az összes értéket tartalmazó tömböt |
Használati példa:
felhasznalo_adatok = {
nev: "Boris",
kor: 45,
varos: "Moszkva"
}
# Adatok elérése
puts felhasznalo_adatok[:nev] # => Boris
# Új mező hozzáadása
felhasznalo_adatok[:allas] = "Fejlesztő"
# Érték módosítása
felhasznalo_adatok[:kor] = 46
# Mező törlése
felhasznalo_adatok.delete(:varos)
# Hash iterálása
felhasznalo_adatok.each do |kulcs, ertek|
puts "#{kulcs}: #{ertek}"
end