在这两种情况下使用&
有什么区别?
致电fun1
:
fun1(&toproc)
在函数定义中:
def fun1(&toblock)
# ...
end
当接收带&toblock
的参数时,它是否转换为Proc
而对于另一种情况,它被转换为一个块?
答案 0 :(得分:3)
在第一种情况下,toproc
是一个包含proc的变量,或者如果没有则会转换为proc。
在第二种情况下,我们明确声明该函数采用了一个块参数,我们可以通过名称toblock
来引用它。
本文给出了一个很好的解释:http://www.skorks.com/2013/04/ruby-ampersand-parameter-demystified/