类是类的 singleton_class 类(eigenclass 类)的实例对象 先有蛋还是先有鸡? 类、类、类....,有点累吧,^_^
一、向类添加的实例方法,(添加类的 singleton_method)
class MyClass
end
a = MyClass.new
#方法1(动态)
MyClass.class_eval %{  
  def hi
    p "hi,world"
  end
}
#方法2(动态)
MyClass.send(:define_method, :hi2){p 'hi, world'}
#调用
a.hi
a.hi2
#=>"hi,world"
#检查
a.methods.grep /^hi+/
MyClass.instance_methods (false)
二、添加类方法,(添加类的 singleton_method)
class MyClass
end
#方法1,使用class_eval(动态)
MyClass.class_eval %{  
  def self.hi
    p "hi,world"
  end
}
#方法2,使用send(动态)
MyClass.singleton_class.send(:define_method, :hi2){p 'hi, world'}
#方法3, 打开MyClass.singleton_class (eigenclass)
class <<MyClass
  def hi3
    p "hi,world"
  end
end
MyClass.hi
MyClass.hi2
MyClass.hi3
MyClass.methods(false)
MyClass.singleton_methods(false)
MyClass.singleton_class.instance_methods(false)
三、向 engenclass 类方法,(可以继承,很少用!)
class <<MyClass #很少用
  def self.hello
    p "i'm in 'MyClass.singleton_classs.methods'"
  end
end
MyClass.singleton_class.hello
MyClass.singleton_class.methods(false)