私はメタプログラミング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
私の最初の質問は、ファイルの最後にある2つのメソッド呼び出しに関するものです:my_class_method :foo
とmy_class_method :bar
。MyClazzオブジェクトがインスタンス化されると、両方が自動的に呼び出されると私は考えていますか?
Q2 Rubyがこれらのメソッド(def foo
およびdef bar
)を生成すると、インスタンスメソッドであっても、MyClazzの固有クラスに配置されます。つまり、これは、Rubyが必要に応じてクラスメソッドとインスタンスメソッドの両方について固有クラスを参照することを意味しますか?
本の奥深くに移動する前に、それを明確にしたいだけです。