1
我意識到,你可以使用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!!!
有沒有辦法解決這個問題?
我很確定你不能在1.8或1.9中做到這一點。 Rubinius肯定會有辦法,但不是標準的Ruby。至少不是沒有任何C代碼。 – 2012-07-20 21:33:36