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: