调用和接收参数之间的区别与&

时间:2016-05-24 21:21:30

标签: ruby-on-rails ruby

在这两种情况下使用&有什么区别?

  1. 致电fun1

    fun1(&toproc)
    
  2. 在函数定义中:

    def fun1(&toblock)
      # ...
    end
    
  3. 当接收带&toblock的参数时,它是否转换为Proc 而对于另一种情况,它被转换为一个块?

1 个答案:

答案 0 :(得分:3)

在第一种情况下,toproc是一个包含proc的变量,或者如果没有则会转换为proc。

在第二种情况下,我们明确声明该函数采用了一个块参数,我们可以通过名称toblock来引用它。

本文给出了一个很好的解释:http://www.skorks.com/2013/04/ruby-ampersand-parameter-demystified/