рубиновый контекст лямбды

Позволяет говорят, что у меня есть следующее рубиновое определение на самом верхнем уровне

callable = lambda {"#{hi}"}

и предположите, что позже я создаю названный объект temp этому назвали метод hi. Теперь то, что я хотел бы сделать, звонить callable в контексте temp. Я попытался делать

temp.instance_eval do callable.call end

но это дает мне ошибку"NameError: undefined local variable or method 'hi' for main:Object". Я хотел бы знать, существует ли какой-либо способ снова переплести контекст callable кому: temp так, чтобы я не получал сообщение об ошибке? Я знаю, что мог определить method_missing на main:Object и перенаправляют все вызовы метода temp но это походит слишком большой из взлома для выполнения то, что я хочу.

5
задан Andrew Grimm 20 September 2011 в 00:00
поделиться