Cuando se llama la ejecución del bloque mediante yield, al finalizar la ejecución del bloque podemos recuperar dicho valor.
Veamos con un simple ejemplo como podemos capturar el valor devuelto por el bloque:
def elevar
for x in 1..10
puts yield x
end
end
elevar do |x|
print "#{x} elevado al cuadrado es "
x ** 2
end
En este ejemplo le pasamos un bloque que tiene una impresión y el retorno del argumento elevado al cuadrado:
elevar do |x|
print "#{x} elevado al cuadrado es "
x ** 2
end
El bloque devuelve el resultado de x ** 2
El método elevar dispone una estructura repetitiva e imprimir el valor devuelto por la llamada a yield que es quien ejecuta el bloque pasando el número del cual queremos obtener el cuadrado:
def elevar
for x in 1..10
puts yield x
end
end
La ejecución del programa nos genera una salida similar a esta:
