Ruby - 阻止范围内的方法

时间:2016-08-22 17:40:20

标签: ruby scope block

我创建了一些类

class Book
  def perform
    yield
  end
end

然后我想调用将调用method1method2的块。但是这两种方法都没有定义,我不想定义它们。而不是这个我想调用method_missing,但我得到: undefined local variable or method 'method1' for main:Object (NameError)

book = Book.new
book.perform do
  method1
  method2
end

那我该怎么办?

1 个答案:

答案 0 :(得分:1)

为了做你要求的事情,我相信你需要像这样重新定义method_missing

class Book
  def perform
    yield
  end
end

def method_missing(methodname, *args)
  puts "#{methodname} called"
end

book = Book.new
book.perform do
  method1
  method2
end

#=>
#method1 called
#method2 called