我正在阅读Metaprogramming Ruby,只是想澄清一下以下释义代码:
class MyClazz
def self.my_class_method(name)
define_method(name) {
# do stuff
}
end
my_class_method :foo
my_class_method :bar
end
# The code above generates instance methods:
# def foo
# do stuff
# end
# def bar
# do stuff
# end
Q1
我的第一个问题是关于文件末尾的两个方法调用:my_class_method :foo
和my_class_method :bar
. 我是否认为在实例化 MyClazz 对象时它们都会自动调用?
Q2当 Ruby 生成这些方法 (def foo
和def bar
) 时,它会将它们放在MyClazz 的eigenclass 中,即使它们是实例方法。那么这是否意味着 Ruby 在需要时会针对类和实例方法查找 eigenclass?
我只是想在我深入本书之前澄清这一点。