读书人

ruby中include与extend的差异

发布时间: 2012-10-24 14:15:58 作者: rapoo

ruby中include与extend的区别
在Rspec的源码中,经常可以看见这样的代码:

KlassA extend ModAKlassA include ModB

那么include和extend究竟有什么区别的?

简而言之,引用如下:

module A def klass_method puts 'klass method' end def ins_method puts 'instance method' endendclass BendB.class_eval do include AendB.new.ins_method # 'should puts instance method'#B.klass_method # 'not define'B.class_eval do extend AendB.klass_method # 'klass method'B.ins_method # also as class method

需要注意的是,如果o.extend Mod的话,那么o将会获得Mod的方法作为其instance method,但是与o同属于1个类的对象则没有Mod的方法

读书人网 >Ruby Rails

热点推荐