Как изменить себя в блоке, как метод instance_eval?
Метод instance_eval меняет себя в своем блоке, например:
class D; end
d = D.new
d.instance_eval do
puts self # print something like #<D:0x8a6d9f4>, not 'main'!
end
Если мы определим метод самостоятельно (или любые другие методы (кроме instance_eval), который принимает блок), при печати self мы получим 'main', который отличается от instance_eval method.eg:
[1].each do |e|
puts self # print 'main'
end
Как я могу определить метод (который занимает блок), как instance_eval? Заранее спасибо.