在 Ruby 中,经常说这yield
比将块转换为Proc
.
例如:
def method
yield
end
比
def method &block
block.call
end
但是,如果需要将一个块作为参数传递几层深怎么办?yield
无论您向下传递多少层,总是更快?它取决于多少层,还是取决于每个闭包中的变量数量?
我问的原因是因为yield
多层深度涉及多次将其包装成一个块,而将其转换为 aProc
可能只需执行一次即可节省时间。我也想知道是否取决于to_proc
方法中需要打包多少变量。
因此,哪个更快:
嵌套收益率?
def method1;method2 {yield};end
def method2;method3 {yield};end
...
def methodn;yield;end
还是&block
?
def method1 █method2 █end
def method2 █method3 █end
...
def methodn █block.call;end