下面是我尝试过的片段,
class Person
def test(arg)
self.class.instance_eval do
define_method(arg) {puts "this is a class method"}
end
end
end
irb(main):005:0> Person.new.test("foo")
=> #<Proc:0x9270b60@/home/kranthi/Desktop/method_check.rb:4 (lambda)>
irb(main):003:0> Person.foo
NoMethodError: undefined method `foo' for Person:Class
irb(main):007:0> Person.new.foo
this is a class method
=> nil
这里我使用instance_eval 和define_method 动态地向Person 类添加一个方法。但是为什么这表现为实例方法呢?这完全依赖于自己吗?使困惑。任何人都可以解释我或参考链接也很感激。