ruby深入研究10

what's different between MyClass.instance_eval() and MyClass.define_method()

class AAA
end

AAA.instance_eval do  
  def aaa
    puts 'aaaa'  
  end
end

AAA.send :define_method, :aaa do
  puts 'new aaa'
end

AAA.aaa  # => aaa

a = AAA.new
a.aaa  # => new aaa

 MyClass.instance_eval()定义的是类方法。

 MyClass.define_method()定义的是实例方法。

你可能感兴趣的:(Ruby)