我晓得可以用 define_singleton_method
这个方法,不过我想知道的是,以下这两种方法之间的差别:
class C; end
C.instance_eval do
def method_a
puts self.class
end
end
C.method_a
# => Class
C.instance_eval do
define_method("method_b") { puts self.class }
end
C.method_b
# => undefined method `method_b' for C:Class (NoMethodError)
我前后分别用了两种方式定义 C class 的 class method,这两种方式的差异是什么?为什么前者可以,后者不行呢?