我有以下代碼: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