上次說到了方法參數(shù)前帶*的用法,這次我們說說前面帶&的用法。
對(duì)這個(gè)符號(hào)的理解,首先要理解ruby中關(guān)于block的概念。
例子:

class Person
?? def initialize(&action)
????? @action = action
?? end

?? def say
????? @action.call
?? end

?? def say2
???? @action.call
?? end
end

p = Person.new{puts("hello world")}
p.say? ---------hello world
p.say2 ---------hello world

在調(diào)用say和say2的時(shí)候,它們中的@action.call執(zhí)行了block中的代碼也就是puts("hello world")。

可以這么理解,yield提供的是方法級(jí)別上執(zhí)行block中的代碼的能力,而&卻可以提供
類中各個(gè)方法執(zhí)行相同block代碼的能力。也就是上面例子中say,say2都執(zhí)行了puts("hello world")。