2011-08-14 9 views

答えて

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 } 
+2

と同じであるブロックを受け入れ、それはあなたがそれを格納することを意味しますあなたがブロックを別のメソッドに渡すか、または後で使用するためにブロックを渡す場合を除いて、渡された場合はProcオブジェクトを必要としません。 –

+0

@Monouïe、ありがとう、picaxeを読み返す – fl00r

6

def test(:&param)は構文エラーの原因となり、def test(&param)はそうではありません。