Bloques
Son las instrucciones que queremos que haga un objeto según su método (itinerador).
Un bloque es una porción de código encerrada entre {} o entre do…end. Por lo tanto, un bloque es una forma de agrupar instrucciones.
Aparece como definición de variables y después de usar un método, entonces el bloque empieza en la misma línea que usa el método. El código dentro del bloque no es ejectuado en el instante que el intérprete de Ruby lo encuentra: Ruby se recordará del bloque (variables locales, …) y después entra en el método, ejecutando el bloque cuando es preciso.
Ejemplos:
Bloque sólo:
{
a="Hola"
b = 0
puts a
puts b+1
}
ó este otro que es similar:
do
a="Hola"
b = 0
puts a
puts b+1
end
Su sintaxis es objeto.método(), {} ó do ... end y sólo se ejecuta cuando es preciso. Los ejemplos anteriores quedan más completos si les añadimos el objeto y el método (itinerador) de la siguiente forma:
2.times {
a="Hola"
b = 0
puts a #se puede poner p en vez de puts
puts b+1 #se puede poner p en vez de puts
}
O de esta forma:
2.times do
a="Hola"
b = 0
puts a
puts b+1
end
Ambos programas dan la siguiente salida:
Hola
1
Hola
1
Otros ejemplos ambos son análogos:
--------------------------------------------------------------------------------
nombre = %w{ Pedro Antonio }
nombre.each {|nombres| puts "#{nombres} es un hombre"}
--------------------------------------------------------------------------------
nombre = %w{ Pedro Antonio }
nombre.each do |nombres|
puts "#{nombres} es un hombre"
end
Salida en ambos casos --->
Pedro es un hombre
Antonio es un hombre
Un bloque es una porción de código encerrada entre {} o entre do…end. Por lo tanto, un bloque es una forma de agrupar instrucciones, y solo puede aparecer después de usar un método: el bloque empieza en la misma línea que usa el método. El código dentro del bloque no es ejectuado en el instante que el intérprete de Ruby lo encuentra: Ruby se recordará del bloque (variables locales, …) y después entra en el método, ejecutando el bloque cuando es preciso.