ruby模块的概念、定义和使用
2016-06-18 03:39
288 查看
1.模块的概念
模块(Module)是一种把方法、类和常量组合在一起的方式。模块(Module)为您提供了两大好处。
a)模块提供了一个命名空间和避免名字冲突。
b)模块实现了 mixin 装置。
模块(Module)定义了一个命名空间,相当于一个沙盒,在里边您的方法和常量不会与其他地方的方法常量冲突。模块类似与类,但有一些不同:
a)模块不能实例化
b)模块没有子类
c)模块只能被另一个模块定义
2.模块的定义
module Identifier
statement1
statement2
...........
end
模块常量命名与类常量命名类似,以大写字母开头。模块方法定义与类方法定义类似。
举例说明:
Trib模块的定义:
#!/usr/bin/ruby
#定义在 trig.rb 文件中的模块
module Trig
PI = 3.141592654
def Trig.sin(x)
# ..
end
def Trig.cos(x)
# ..
end
end
Moral模块的定义:
#!/usr/bin/ruby
#定义在 moral.rb 文件中的模块
module Moral
VERY_BAD = 0
BAD = 1
def Moral.sin(badness)
# ...
end
end
3.模块的使用方式
(1)Ruby require引入一个模块
require语句类似于 C 和 C++ 中的 include 语句以及 Java 中的 import语句。如果一个第三方的程序想要使用任何已定义的模块,则可以简单地使用 Ruby require 语句来加载模块文件。
require filename #在这里,文件扩展名 .rb 不是必需的。
举例说明:
$LOAD_PATH <<'.'
require 'trig.rb'
require 'moral'
y =Trig.sin(Trig::PI/4)
wrongdoing =Moral.sin(Moral::VERY_BAD)
在这里,我们使用 $LOAD_PATH << '.' 让 Ruby 知道必须在当前目录中搜索被引用的文件。如果您不想使用$LOAD_PATH,那么您可以使用 require_relative 来从一个相对目录引用文件。
注意:在这里,文件包含相同的函数名称。所以,这会在引用调用程序时导致代码模糊,但是模块避免了这种代码模糊,而且我们可以使用模块的名称调用适当的函数。
使用模块名称和一个点号来调用模块方法;使用模块名称和两个冒号来引用一个模块常量。
(2)Ruby include 语句在类中引入一个模块
可以在类中嵌入模块。为了在类中嵌入模块,您可以在类中使用 include 语句来引入一个模块:
include modulename举例来说明,
首先定义模块Week:
module Week
FIRST_DAY = "Sunday"
def Week.weeks_in_month
puts "You have four weeks in a month"
end
def Week.weeks_in_year
puts "You have 52 weeks in a year"
end
end
然后在Decade类中引用该模块:
学习资料来源于: http://www.runoob.com/ruby/ruby-module.html
模块(Module)是一种把方法、类和常量组合在一起的方式。模块(Module)为您提供了两大好处。
a)模块提供了一个命名空间和避免名字冲突。
b)模块实现了 mixin 装置。
模块(Module)定义了一个命名空间,相当于一个沙盒,在里边您的方法和常量不会与其他地方的方法常量冲突。模块类似与类,但有一些不同:
a)模块不能实例化
b)模块没有子类
c)模块只能被另一个模块定义
2.模块的定义
module Identifier
statement1
statement2
...........
end
模块常量命名与类常量命名类似,以大写字母开头。模块方法定义与类方法定义类似。
举例说明:
Trib模块的定义:
#!/usr/bin/ruby
#定义在 trig.rb 文件中的模块
module Trig
PI = 3.141592654
def Trig.sin(x)
# ..
end
def Trig.cos(x)
# ..
end
end
Moral模块的定义:
#!/usr/bin/ruby
#定义在 moral.rb 文件中的模块
module Moral
VERY_BAD = 0
BAD = 1
def Moral.sin(badness)
# ...
end
end
3.模块的使用方式
(1)Ruby require引入一个模块
require语句类似于 C 和 C++ 中的 include 语句以及 Java 中的 import语句。如果一个第三方的程序想要使用任何已定义的模块,则可以简单地使用 Ruby require 语句来加载模块文件。
require filename #在这里,文件扩展名 .rb 不是必需的。
举例说明:
$LOAD_PATH <<'.'
require 'trig.rb'
require 'moral'
y =Trig.sin(Trig::PI/4)
wrongdoing =Moral.sin(Moral::VERY_BAD)
在这里,我们使用 $LOAD_PATH << '.' 让 Ruby 知道必须在当前目录中搜索被引用的文件。如果您不想使用$LOAD_PATH,那么您可以使用 require_relative 来从一个相对目录引用文件。
注意:在这里,文件包含相同的函数名称。所以,这会在引用调用程序时导致代码模糊,但是模块避免了这种代码模糊,而且我们可以使用模块的名称调用适当的函数。
使用模块名称和一个点号来调用模块方法;使用模块名称和两个冒号来引用一个模块常量。
(2)Ruby include 语句在类中引入一个模块
可以在类中嵌入模块。为了在类中嵌入模块,您可以在类中使用 include 语句来引入一个模块:
include modulename举例来说明,
首先定义模块Week:
module Week
FIRST_DAY = "Sunday"
def Week.weeks_in_month
puts "You have four weeks in a month"
end
def Week.weeks_in_year
puts "You have 52 weeks in a year"
end
end
然后在Decade类中引用该模块:
#!/usr/bin/ruby $LOAD_PATH << '.' require "support" class Decade include Week no_of_yrs=10 def no_of_months puts Week::FIRST_DAY number=10*12 puts number end end d1=Decade.new puts Week::FIRST_DAY Week.weeks_in_month Week.weeks_in_year d1.no_of_months
学习资料来源于: http://www.runoob.com/ruby/ruby-module.html
相关文章推荐
- Ruby中的关键字nil
- ruby中正则表达式的使用
- ruby中散列的定义和使用
- ruby中数组的定义和使用
- ruby中的控制逻辑语句
- ruby中的打印函数print | puts | p
- Ruby中的各种方法定义和调用(函数式方法|实例方法|类方法)
- ruby变量
- Cocoa pods最新版的安装方法
- Xcode无法安装基于ruby的插件问题的解决
- Xcode无法安装基于ruby的插件问题的解决
- Xcode无法安装基于ruby的插件问题的解决
- CocoaPods安装
- Elastic Search安装及使用
- windows7下安装ruby,rubyGems和devkit
- Ruby常用文件操作代码实例
- ruby 文件操作
- Ubuntu安装ruby:使用RVM
- ruby操作excel文件
- ruby操作excel(从打开-输入信息-保存-etc)