上次说到了方法参数前带*的用法,这次我们说说前面带&的用法。
对这个符号的理解,首先要理解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")。