• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

ruby中的extend和include

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

include

 

include是把module中定义的instance_method给mixin,然后当做类的实例方法使用(是因为module本身不能使用module的实例方法),给类进行实例化一个对象,然后对象再直接调用实例方法。

1       module Mood
2          def say
3              p "hello, everyone!"
4          end
5       end
6       class Person
7           include Mood
8       end
9       Person.new.say

#=>     "hello, everyone!"

 

 

extend 是把module的方法导入到当前的模块当中,所以如果module是实例方法,在被mixin到类中时,就变成了module的类方法:

eg:

1      module Mood
2          def say
3              p "hello, everyone!"
4          end
5       end
6       class Person
7           extend Mood
8       end
9       Person.say

#=>     "hello, everyone!"

 

如果实例方法的module,被引用到类的实例方法中时,就仍混入为实例方法

module Mood
     def say
          p "hello, everyone!"
      end
end
class Person
end
person = Person.new 
person.extend(Mood)    
person.say

即,class类中用extend方法,若module为实例方法,则被转变为module的类方法;若放入class的实例方法,则module仍为实例;

但是把module的类方法放入class的实例方法,则module不会改变,仍为类。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
【转】如何从零开始学会RubyonRails?发布时间:2022-07-14
下一篇:
ruby实现SHA1PRNG发布时间:2022-07-14
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap