Suponiendo Tengo el siguiente proc:¿Cómo pasar un bloque a otro en Ruby?
a = Proc.new do
puts "start"
yield
puts "end"
end
también asumiendo que pase a
a otro método que llama posteriormente instance_eval
en otra clase con ese bloque, ¿cómo puedo ahora pasar a un bloque en el extremo de que el método que se cedido en a
.
Por ejemplo:
def do_something(a,&b)
AnotherClass.instance_eval(&a) # how can I pass b to a here?
end
a = Proc.new do
puts "start"
yield
puts "end"
end
do_something(a) do
puts "this block is b!"
end
salida debe, por supuesto, debe ser:
start
this block is b!
end
¿Cómo puedo pasar el bloque secundario a una en el instance_eval
?
Necesito algo como esto para la base de un sistema de plantillas de Ruby en el que estoy trabajando.
posible duplicado de [Trouble produciendo dentro de un bloque/lambda] (http://stackoverflow.com/questions/4982630/trouble-yielding-inside-a-block-lambda) –