1.9.2p290 :001 > class Foo;end
=> nil
查看下;
1.9.2p290 :004 > Foo.instance_methods(false)
=> []
定义一个方法,给指定Class添加一个实例方法hi;
1.9.2p290 :005 > def add_method_to(a_class)
1.9.2p290 :006?> a_class.class_eval do
1.9.2p290 :007 > def hi;'hello!';end
1.9.2p290 :008?> end
1.9.2p290 :009?> end
=> nil
调用add_method_to,给Foo添加hi实例方法;
1.9.2p290 :010 > add_method_to Foo
=> nil
1.9.2p290 :011 > Foo.instance_methods(false)
=> [:hi]
1.9.2p290 :012 > a=Foo.new
=> #<Foo:0x87ffbf4>
1.9.2p290 :013 > a.hi
=> "hello!"
定义一个方法,给指定Class添加一个单例Singleton方法bye;
1.9.2p290 :014 > def add_self_method_to(a_class)
1.9.2p290 :015?> a_class.class_eval do
1.9.2p290 :016 > def a_class.bye; 'bye!';end
1.9.2p290 :017?> end
1.9.2p290 :018?> end
=> nil
1.9.2p290 :019 > add_self_method_to Foo
=> nil
1.9.2p290 :020 > Foo.instance_methods(false)
=> [:hi]
1.9.2p290 :021 > Foo.bye
=> "bye!"
1.9.2p290 :035 > Foo.singleton_methods
=> [:bye]