元编程中说:像attr_accessor()
这样的方法成为类宏。而attr_accessor
是拟态方法,那么拟态方法和类宏有什么区别?或者说类宏具体是怎么定义的?
下面这段代码的执行过程:
class Book
def title # ...
end
def lend_to(user) puts "Lending to #{user}" # ... end
def self.deprecate(old_method, new_method) define_method(old_method) do |*args, &block| warn "Warning: #{old_method}() is deprecated. Use #{new_method}()." send(new_method, *args, &block) end end deprecate :GetTitle, :title deprecate :LEND_TO_USER, :lend_to deprecate :title2, :subtitle end
b = Book.new b.LEND_TO_USER("Bill")
(1) **当实例化(Book.new)时有没有调用哪个方法?**
(2) **在调用b.LEND_TO_USER("Bill")时,具体是怎么运行的,没看懂具体的执行步骤。**
<<Ruby元编程>>p115,这段代码p47也有段类似的。