Estoy aprendiendo ruby y tratando de entender el alcance del código ejecutado en bloques. Por ejemplo, quiero ser capaz de crear un bloque que afecta el método que se une a, así:ruby: ¿puede un bloque afectar variables locales en un método?
def test(&block)
block.call() if block_given?
puts "in test, foo is #{foo}"
puts "in test, bar is #{bar}"
end
test() {
foo="this is foo"
bar="this is bar"
}
En este caso, no quiero tener que modificar el bloque en absoluto - Quiero poder escribir usando referencias de variables simples y sin parámetros. Solo al realizar cambios en el método de "prueba" en el ejemplo anterior, ¿es posible acceder a las variables definidas en el bloque?
Una vez más, el objetivo es dejar el bloque sin modificar, pero poder acceder a las variables creadas desde 'prueba' después de que se ejecute el bloque.
Esto es engañoso, no se está accediendo a los locales en el bloque como la pregunta dice, sólo el valor de retorno del bloque. –