我的定义为def test(¶m)
和def test(:¶m)
的函数。两者有什么区别?
答案 0 :(得分:6)
不同之处在于def test(:¶m)
导致语法错误而def test(¶m)
没有。
答案 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(:¶m)
会引发错误。
您也可以拨打method(&:operator)
:
[1,2,3].inject(&:+)
#=> 6
与
相同[1,2,3].inject{|sum, i| sum+i }