Как передать блок другому в Ruby?

Предполагая, что у меня есть следующий процесс:

a = Proc.new do
    puts "start"
    yield
    puts "end"
end

Также предполагая, что я передаю aдругому методу, который впоследствии вызывает instance_evalв другом классе с этим блоком, как теперь я могу передать блок в конец этого метода, который был получен в a.

Например:

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

Вывод, конечно, должен быть:

start
this block is b!
end

Как я могу передать вторичный блок в instance_eval?

Мне нужно что-то подобное для основы системы шаблонов Ruby, над которой я работаю.

6
задан Alex Coplan 3 July 2012 в 15:55
поделиться