1. 模块示例
创建一个 Hello 模块的范例:
#!/usr/bin/ruby #文件名为module.rb
module Hello #模块名的首写字母与类一样都必须大写
def self.hello_python #self为关键字
print "Hello Python!"
end
def self.hello_ruby
print "Hello Ruby!"
end
end
Hello.hello_python
Hello.hello_ruby #调用模块中的方法
运行:
2. require 语句
require 语句与 C 语言中的 include 类似,是用来加载模块文件的。
范例:
#!/usr/bin/ruby
$LOAD_PATH << ‘.’ #在当前目录搜索被引用文件
require 'module' #或者是require 'module.rb' ,这里填的是文件名
Hello.hello_python
Hello.hello_ruby #调用Hello模块中的方法
运行:
3. 在类中引用模块 -include
范例: 现有模块文件
#!/usr/bin/ruby #文件名为support.rb
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
现在在类中来引用这个模块
1 #!/usr/bin/ruby
2
3 $LOAD_PATH << '.'
4 require "support"
5
6 class Decade
7 include Week
8 no_of_yrs=10
9 def no_of_months
10 puts Week::FIRST_DAY
11 number=10*12
12 puts number
13 end
14 end
15
16 puts Week::FIRST_DAY
17 Week.weeks_in_month
18 Week.weeks_in_year
19
20 test1=Decade.new
21 test1.no_of_months
运行:
4. mixins装置
在面向对象的语言中继承是非常重要的,但是 Ruby 不直接支持继承,幸运的是 Ruby 的模块提供了 mixins 装置,而这几乎消除了对多重继承的需要。
举例:
module A
def a1
end
def a2
end
end
module B
def b1
end
def b2
end
end
class Sample
include A
include B
def s1
end
end
samp=Sample.new
samp.a1
samp.a2
samp.b1
samp.b2
samp.s1
在模块 A 中包含了方法 a1 和 a2,模块 B 包含了 b1 和 b2。同时类 Sample 中包含了模块 A 和 B,因此类Sample 继承了两个模块,可以访问模块 A 和 B 包含的四个方法。