我有以下代码:Proc.new如何在此代码中找到该块?
def call_block
Proc.new.call
my_local_proc = Proc.new { Proc.new.call }
my_local_proc.call
end
call_block { p 'block' }
输出是:
block
block
有人能向我解释如何Proc.new发现我传递给call_block块? 我想Proc.new只是搜索最接近的块,并且它完全用C++实现。
我还有另一个问题:像这样的事情可以实现只使用红宝石?我的意思是, 我可以编写一个方法,如果没有给出块,则传递给调用它的方法的块。例如:
def bar
if not block_given?
#use the block that has been given to the caller
end
# some code
end
def foo
bar
end
foo { :block }
很好的回答和解释! – user931392