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