Els hashes són una estructura de dades fonamental en Ruby que permeten emmagatzemar parelles clau-valor. A diferència dels arrays, on els elements s'indexen numèricament, els hashes permeten utilitzar qualsevol objecte com a clau per accedir als seus valors associats.

Conceptes Clau

  • Clau: Un objecte únic que s'utilitza per identificar un valor en el hash.
  • Valor: L'objecte associat a una clau específica.
  • Parelles clau-valor: Cada entrada en un hash consisteix en una clau i el seu valor associat.

Creació d'un Hash

Sintaxi Bàsica

# Creació d'un hash buit
hash_buit = {}

# Creació d'un hash amb parelles clau-valor
hash = { "clau1" => "valor1", "clau2" => "valor2" }

Utilitzant la Nova Sintaxi (a partir de Ruby 1.9)

# Creació d'un hash amb la nova sintaxi
hash = { clau1: "valor1", clau2: "valor2" }

Accés als Valors

Accés per Clau

hash = { "nom" => "Joan", "edat" => 30 }

# Accedir al valor associat a la clau "nom"
nom = hash["nom"]  # Retorna "Joan"

# Accedir al valor associat a la clau "edat"
edat = hash["edat"]  # Retorna 30

Accés amb la Nova Sintaxi

hash = { nom: "Joan", edat: 30 }

# Accedir al valor associat a la clau :nom
nom = hash[:nom]  # Retorna "Joan"

# Accedir al valor associat a la clau :edat
edat = hash[:edat]  # Retorna 30

Modificació d'un Hash

Afegir o Actualitzar Parelles Clau-Valor

hash = { "nom" => "Joan" }

# Afegir una nova parella clau-valor
hash["edat"] = 30

# Actualitzar el valor d'una clau existent
hash["nom"] = "Maria"

Utilitzant la Nova Sintaxi

hash = { nom: "Joan" }

# Afegir una nova parella clau-valor
hash[:edat] = 30

# Actualitzar el valor d'una clau existent
hash[:nom] = "Maria"

Iteració sobre un Hash

Iterar sobre Clau i Valor

hash = { nom: "Joan", edat: 30 }

hash.each do |clau, valor|
  puts "Clau: #{clau}, Valor: #{valor}"
end

Iterar només sobre les Claus

hash = { nom: "Joan", edat: 30 }

hash.each_key do |clau|
  puts "Clau: #{clau}"
end

Iterar només sobre els Valors

hash = { nom: "Joan", edat: 30 }

hash.each_value do |valor|
  puts "Valor: #{valor}"
end

Mètodes Útils per a Hashes

keys i values

hash = { nom: "Joan", edat: 30 }

# Obtenir totes les claus
claus = hash.keys  # Retorna [:nom, :edat]

# Obtenir tots els valors
valors = hash.values  # Retorna ["Joan", 30]

delete

hash = { nom: "Joan", edat: 30 }

# Eliminar una parella clau-valor
hash.delete(:edat)  # Retorna 30 i elimina la clau :edat del hash

merge

hash1 = { nom: "Joan", edat: 30 }
hash2 = { ciutat: "Barcelona", edat: 35 }

# Fusionar dos hashes
hash_fusionat = hash1.merge(hash2)  # Retorna { nom: "Joan", edat: 35, ciutat: "Barcelona" }

Exercicis Pràctics

Exercici 1: Creació i Accés a Hashes

  1. Crea un hash que contingui informació sobre un llibre: títol, autor i any de publicació.
  2. Accedeix i imprimeix el títol del llibre.
# Solució
llibre = { titol: "El Quixot", autor: "Miguel de Cervantes", any: 1605 }
puts llibre[:titol]  # Retorna "El Quixot"

Exercici 2: Modificació de Hashes

  1. Afegeix una nova clau :gènere al hash del llibre amb el valor "Novel·la".
  2. Actualitza l'any de publicació a 1615.
# Solució
llibre[:genere] = "Novel·la"
llibre[:any] = 1615

Exercici 3: Iteració sobre Hashes

  1. Itera sobre el hash del llibre i imprimeix cada clau i valor.
# Solució
llibre.each do |clau, valor|
  puts "Clau: #{clau}, Valor: #{valor}"
end

Resum

En aquesta secció, hem après què són els hashes, com crear-los, accedir-hi, modificar-los i iterar-hi. Els hashes són una eina poderosa per emmagatzemar i gestionar dades en parelles clau-valor, i són àmpliament utilitzats en Ruby per la seva flexibilitat i eficiència. Amb els exercicis pràctics, has tingut l'oportunitat de posar en pràctica aquests conceptes i reforçar el teu coneixement.

© Copyright 2024. Tots els drets reservats