43 - Bloques: valor de retorno del bloque

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:

Programa: ejercicio163.rb

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:

bloques en Ruby