Sobes.tech
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