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)
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
Iterar només sobre els Valors
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
- Crea un hash que contingui informació sobre un llibre: títol, autor i any de publicació.
- 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
- Afegeix una nova clau
:gènere
al hash del llibre amb el valor "Novel·la". - Actualitza l'any de publicació a 1615.
Exercici 3: Iteració sobre Hashes
- Itera sobre el hash del llibre i imprimeix cada clau i valor.
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.
Curs de Programació en Ruby
Mòdul 1: Introducció a Ruby
Mòdul 2: Conceptes Bàsics de Ruby
Mòdul 3: Treballant amb Col·leccions
Mòdul 4: Programació Orientada a Objectes en Ruby
- Classes i Objectes
- Variables i Mètodes d'Instància
- Variables i Mètodes de Classe
- Herència
- Mòduls i Mixins
Mòdul 5: Conceptes Avançats de Ruby
- Blocs, Procs i Lambdas
- Metaprogramació
- Gestió d'Excepcions
- Entrada/Sortida de Fitxers
- Expressions Regulars
Mòdul 6: Introducció a Ruby on Rails
- Què és Ruby on Rails?
- Configuració de l'Entorn Rails
- Creació d'una Aplicació Simple en Rails
- Arquitectura MVC
- Rutes
Mòdul 7: Proves en Ruby
- Introducció a les Proves
- Proves Unitàries amb Minitest
- Desenvolupament Basat en Comportament amb RSpec
- Mocking i Stubbing
Mòdul 8: Millors Pràctiques en Ruby
- Estil de Codi i Convencions
- Refactorització
- Optimització del Rendiment
- Millors Pràctiques de Seguretat