ruby方法中¶m和:¶m之间的区别

时间:2011-08-14 15:20:43

标签: ruby-on-rails ruby

我的定义为def test(&param)def test(:&param)的函数。两者有什么区别?

2 个答案:

答案 0 :(得分:6)

不同之处在于def test(:&param)导致语法错误而def test(&param)没有。

答案 1 :(得分:4)

def test(&block) ...

表示我们的方法接受一个块:

def test(number, &block)
  yield number
  # same as
  # block.call number
end
test(10) {|a| a+a}
#=> 20
# or
block = proc{|a| a*a}
test 10, &block
#=> 100

虽然def test(:&param)会引发错误。

您也可以拨打method(&:operator)

之类的内容
[1,2,3].inject(&:+)
#=> 6

相同
[1,2,3].inject{|sum, i| sum+i }