Supponendo Ho il seguente proc:Come passare un blocco a un altro in Ruby?
a = Proc.new do
puts "start"
yield
puts "end"
end
anche assumendo passo a
un altro metodo che chiama successivamente instance_eval
su un'altra classe con quel blocco, come posso ora passare un blocco sull'estremità di detto metodo che ottiene ceduto in a
.
Ad esempio:
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
uscita dovrebbe naturalmente dovrebbe essere:
start
this block is b!
end
Come posso passare il blocco secondario ad una nel instance_eval
?
Ho bisogno di qualcosa del genere per la base di un sistema di modelli Ruby su cui sto lavorando.
possibile duplicato [Problemi cedevole all'interno di un blocco/lambda] (http://stackoverflow.com/questions/4982630/trouble-yielding-inside-a-block-lambda) –