首页 > 代码库 > ruby简单的基础 6
ruby简单的基础 6
模块
模块同类一样,也有 class method 和 instance method。
module 没有new不能生成实例对象
其中 class method 在模块中称为模块方法,是可以直接调用的。
module Foo def self.hello puts ‘hello world!‘ end def Foo.dear #module全局作用域内的self还是没有变,就是Module; puts ‘dear..‘ end NUM = 100 end
Foo.hello #=> ‘hello world!‘ 调用模块方法 模块名字.方法名字
Foo.dear #=> ‘dear..‘ 调用模块方法 模块名字.方法名字
Foo::NUM #=> 100 引用一个常数,使用模块名和两个冒号。
而对于模块里面的 instance method 实例方法,这种方法不能直接调用,需要mixin到一个类中。
主要有两种形式:
一种是include,方法会被添加到实例方法中。
一种是extend,方法会被添加到类方法中。
module M def self.m_fun puts ‘m fun‘ end def instance_fun puts ‘instance fun‘ end NUM = 100 end M.m_fun M::m_fun puts M::NUM puts ‘-----------------‘ class A include M end #A.m_fun #A.instance_fun #A.new.m_fun A.new.instance_fun puts ‘-----------------‘ class B extend M end #B.m_fun B.instance_fun #B.new.m_fun #B.new.instance_fun
一些总结
require, load,include都是Kernel模块中的方法,他们的区别如下:require,load用于包含文件,include则用于包含的模块。
require加载一次,load可加载多次。
require加载Ruby代码文件时可以不加后缀名,load加载代码文件时必须加后缀名。
require一般情况下用于加载库文件,而load用于加载配置文件。
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。