我意识到您可以使用更改块的绑定instance_eval
class Foo
def bar &block
instance_eval &block
end
end
Foo.new.bar { self } # returns the instance
但是一些内置方法接受块,在这种情况下,似乎不可能在不弄乱内置方法内部的情况下更改块的绑定。
class Foo
def enum &block
Enumerator.new &block
end
end
Foo.new.enum { self }.each {} # returns main!!!
有没有解决的办法?