Ruby 编程:模块、混合与输入输出详解
1. 模块机制
模块机制为方法和常量提供了一个命名空间,就像一个沙盒,让它们可以独立运行,不用担心被其他方法和常量干扰。例如,三角函数可以放在一个模块中:
module Trig
PI = 3.141592654
def Trig.sin(x)
# ..
end
def Trig.cos(x)
# ..
end
end
而“道德”相关的好坏方法可以放在另一个模块中:
module Moral
VERY_BAD = 0
BAD = 1
def Moral.sin(badness)
# ...
end
end
模块常量的命名和类常量一样,首字母大写。模块方法的定义也和类方法类似。如果一个程序要使用这些模块,只需使用 Ruby 的 require
语句加载相应文件,然后引用限定名即可:
require 'trig'
require 'moral'
y = Trig.sin(Trig::PI/4)
wrongdoing = Moral.sin(Moral::VERY_BAD)
调用模块方法时,在方法名前加上模块名和点号;引用常量时,使用模块名和两个冒号。
2. 混合(Mixins)
模块还有一个很棒的用途——混合