Sobes.tech
Intern

Šta je hash (HASH) u Ruby-ju?

sobes.tech АИ

Одговор од АИ

Hash (Hash) u Rubyju je uređena kolekcija parova "ključ-vrednost", gde je svaki jedinstveni ključ povezan sa određenom vrednošću. Ključevi su obično simboli (Symbol) ili nizovi (String), ali mogu biti bilo koji objekti za koje su implementirane metode eql? i hash.

Osobine hasha:

  • Uređenost: Od verzije Ruby 1.9, hashovi podržavaju redosled umetanja elemenata.
  • Pristup po ključu: Pristup vrednostima je brz po odgovarajućem ključu.
  • Dinamička veličina: Hashovi se mogu proširivati ili smanjivati dodavanjem ili uklanjanjem elemenata.
  • Nema duplikata ključeva: Svaki ključ je jedinstven u okviru jednog hasha.

Primeri kreiranja hasha:

# Korišćenje literala
person = { "name" => "Alice", "age" => 30 }

# Korišćenje simbola kao ključeva (češće i efikasnije)
settings = { :theme => "dark", :language => "ru" }

# Notacija u stilu ključnih reči (Key-Value Pair Shorthand), od Ruby 1.9
config = { host: "localhost", port: 8080 }

# Pomoću konstruktora Hash.new
empty_hash = Hash.new

Osnovne operacije sa hash-ovima:

Operacija Primer Opis
Pristup vrednosti person["name"] Vraća vrednost po ključu "name"
Dodavanje/promena person["city"] = "New York" Dodaje par ili menja vrednost po ključu
Brisanje person.delete("age") Uklanja par po ključu "age"
Veličina person.size ili person.length Vraća broj parova u hashu
Provera ključa person.key?("name") Proverava prisustvo ključa u hashu
Provera vrednosti person.value?(30) Proverava prisustvo vrednosti u hashu
Iteracija `person.each { key, value
Vraćanje ključeva person.keys Vraća niz svih ključeva
Vraćanje vrednosti person.values Vraća niz svih vrednosti

Primer upotrebe:

user_data = {
  name: "Борис",
  age: 45,
  city: "Москва"
}

# Pristup podacima
puts user_data[:name]   # => Борис

# Dodavanje novog polja
user_data[:job] = "Разработчик"

# Izmena vrednosti
user_data[:age] = 46

# Uklanjanje polja
user_data.delete(:city)

# Iteracija kroz hash
user_data.each do |key, value|
  puts "#{key}: #{value}"
end