2012-02-25 61 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

在第一個參數&a也會捕獲這樣一個塊:

abc {puts "Hello world"} 

這與以下內容相同:

xyz(proc {puts "Hello world"}) 

另外兩個只允許兩個中的最後一個。

+0

以上兩者在第一種情況下不同,第一種情況是'實際的塊被傳遞給方法,第二種情況'塊作爲參數傳遞'。第二個應該提出'ArgumentError:錯誤的參數數量(1爲0)' – 2012-02-25 15:29:02

+0

好點。編輯答案。 – Linuxios 2012-02-25 15:56:06