define_method是Module的一种方法.
在Ruby 2.0中,define_method可以在顶层使用;它不必在类或模块中.
define_method :kick do
puts "method"
end
在Ruby 1.9中,主对象没有define_method方法.
define_method :kick
# => NoMethodError: undefined method `define_method' for main:Object
Ruby 2.0如何实现这一点?
最佳答案 我也很好奇这个功能,并使用irb尝试一下.请看一下:
% irb
2.0.0-p353 :001 > method(:define_method)
=> #<Method: main.define_method>
2.0.0-p353 :002 > private_methods(false)
=> [:public, :private, :include, :using, :define_method, :irb_exit_org, :default_src_encoding, :irb_binding]
2.0.0-p353 :003 > singleton_class.private_instance_methods(false)
=> [:public, :private, :include, :using, :define_method, :irb_exit_org]
它表明define_method是主对象的私有单例方法(顶级自我).