2012-02-25 7 views
1

PROC {}及び&PROC {違いは何である}

使用以下
a = proc { puts 'hii' } 

def abc(&a) 
    a.call 
end 
abc(&a) 

def xyz(c) 
    c.call 
end 
xyz(a) 

差が実装以下では、複数のブロックを引数として渡すことができるものである - において

def pqr(c, &t) 
    c.call 
    yield 
    xyz(c) 
    abc(&t) 
end 
pqr(a) { puts 'block to method'} 

答えて

2

最初の2つのうち、&aパラメータは、次のように渡されたブロックを取得します。

abc {puts "Hello world"} 

これは次のものと同じです:

xyz(proc {puts "Hello world"}) 

2つのうちの残りの2つだけが最後の2つを許可します。

+0

上記の両方は、最初のケースでは「実際のブロックがメソッドに渡され」、2番目のケースでは「ブロックが引数として渡されます」と同じではありません。 2番目は 'ArgumentError:引数の数が間違っています(1の場合は1)'を引き上げるべきです。 –

+0

良い点。答えを編集する。 – Linuxios