Els iteradors són una part fonamental de Ruby i permeten recórrer col·leccions com arrays i hashes de manera eficient i elegant. En aquesta secció, aprendrem què són els iteradors, com utilitzar-los i veurem alguns dels iteradors més comuns en Ruby.
Què és un Iterador?
Un iterador és un mètode que repeteix una operació sobre cada element d'una col·lecció. En Ruby, els iteradors són sovint implementats com a mètodes que prenen blocs de codi com a arguments.
Iteradors Comuns en Ruby
each
El mètode each
és probablement l'iterador més utilitzat en Ruby. Permet recórrer cada element d'una col·lecció i executar un bloc de codi per a cada element.
Exemple amb Arrays
Explicació:
numbers
és un array.each
recorre cada element de l'array.- El bloc
do |number| ... end
s'executa per a cada element, assignant l'element actual a la variablenumber
.
Exemple amb Hashes
person = { name: "Alice", age: 30, city: "Barcelona" } person.each do |key, value| puts "#{key}: #{value}" end
Explicació:
person
és un hash.each
recorre cada parella clau-valor del hash.- El bloc
do |key, value| ... end
s'executa per a cada parella, assignant la clau akey
i el valor avalue
.
map
El mètode map
crea un nou array amb els resultats de l'execució d'un bloc de codi sobre cada element de l'array original.
Exemple
numbers = [1, 2, 3, 4, 5] squared_numbers = numbers.map do |number| number ** 2 end puts squared_numbers.inspect
Explicació:
numbers
és un array.map
recorre cada element de l'array i aplica el bloc de codi.- El bloc
do |number| ... end
eleva cada número al quadrat. squared_numbers
és un nou array amb els resultats.
select
El mètode select
retorna un nou array que conté tots els elements per als quals el bloc de codi retorna true
.
Exemple
numbers = [1, 2, 3, 4, 5] even_numbers = numbers.select do |number| number.even? end puts even_numbers.inspect
Explicació:
numbers
és un array.select
recorre cada element de l'array i aplica el bloc de codi.- El bloc
do |number| ... end
retornatrue
si el número és parell. even_numbers
és un nou array amb els números parells.
reject
El mètode reject
és l'oposat de select
. Retorna un nou array que conté tots els elements per als quals el bloc de codi retorna false
.
Exemple
numbers = [1, 2, 3, 4, 5] odd_numbers = numbers.reject do |number| number.even? end puts odd_numbers.inspect
Explicació:
numbers
és un array.reject
recorre cada element de l'array i aplica el bloc de codi.- El bloc
do |number| ... end
retornatrue
si el número és parell. odd_numbers
és un nou array amb els números senars.
Exercicis Pràctics
Exercici 1: Utilitzant each
Escriu un programa que recorri un array de noms i imprimeixi cada nom en majúscules.
Exercici 2: Utilitzant map
Escriu un programa que prengui un array de números i retorni un nou array amb cada número multiplicat per 10.
numbers = [1, 2, 3, 4, 5] # Solució multiplied_numbers = numbers.map do |number| number * 10 end puts multiplied_numbers.inspect
Exercici 3: Utilitzant select
Escriu un programa que prengui un array de números i retorni un nou array amb només els números majors que 3.
numbers = [1, 2, 3, 4, 5] # Solució greater_than_three = numbers.select do |number| number > 3 end puts greater_than_three.inspect
Exercici 4: Utilitzant reject
Escriu un programa que prengui un array de números i retorni un nou array amb tots els números que no són divisibles per 2.
numbers = [1, 2, 3, 4, 5] # Solució not_divisible_by_two = numbers.reject do |number| number % 2 == 0 end puts not_divisible_by_two.inspect
Resum
En aquesta secció, hem après sobre els iteradors en Ruby, incloent els mètodes each
, map
, select
i reject
. Hem vist com utilitzar aquests mètodes amb arrays i hashes, i hem practicat amb alguns exercicis. Els iteradors són una eina poderosa per treballar amb col·leccions de dades de manera eficient i elegant. En la propera secció, explorarem el mòdul Enumerable
i com ens pot ajudar a treballar amb col·leccions de dades en Ruby.
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