上次說到了方法參數前帶*的用法,這次我們說說前面帶&的用法。
對這個符號的理解,首先要理解ruby中關于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
在調用say和say2的時候,它們中的@action.call執行了block中的代碼也就是puts("hello world")。
可以這么理解,yield提供的是方法級別上執行block中的代碼的能力,而&卻可以提供
類中各個方法執行相同block代碼的能力。也就是上面例子中say,say2都執行了puts("hello world")。