# Module name 第一個字必需大寫
module Module_name
# adding class
class MyClass
end
# adding method
def myMethod
end
# namespace
module another_moudle_name
end
end
用途
NameSpace
Mixin
NameSpace
用來區分命名空間,當有相同命名時,可透過module 區分命名空間
Mixin
因為Ruby Class有單一繼承的限制。所以就可透過此方法,擴充Class 的功能
Mixin 分成兩類:
include:class instance 才能操作
extend:不需instance 就可以透過 class_name.method_name 操作
12345678910111213141516171819
module Power
def calPower(num)
num ** num
end
end
module StringUtil
def repeating(num, string)
string * num
end
end
class Example
include Power
extend StringUtil
end
p Example.new.calPower(2) # 4
p Example.repeating(2,"a") # "aa"
module CompanyA
def greeting(name)
"Hello #{name} at CompanyA"
end
module_function :greeting
end
# 上下功能相同
module CompanyB
def self.greeting(name)
"Hello #{name} at CompanyB"
end
end
p CompanyA.greeting("JT") # "Hello JT at CompanyA"
p CompanyB.greeting("JT") # "Hello JT at CompanyB"