今天学习到了 Module 这块,因为看到了 Modulue 和 Class 有很多相似的地方,暂时没有搞得很清楚,有几个问题想请教一下:
书中给了一个例子:
module HelloModule1
Version = "1.0"
def hello(name)
puts "Hello," + name
end
module_function :hello
end
p HelloModule::Version
HelloModule::hello("Alice")
include HelloModule
p Version
hello("Alice")
在这里针对这段
module_function :hello
文中的解释是: #将 hello 以模组函数式形式公开
本人对这段话的理解是:
def hello(name)
puts "Hello," + name
end
本来是该 module 下的一个实例方法,在没有生成一个实例前是不能调用或访问的。但是在经过module_function :
声明之后,就有点类似一个静态的方法可以直接访问。
不知道这样理解是否正确。
Case1
#Case1
module HelloModule1
Version = "1.0"
def hello(name)
puts "Hello," + name
end
module_function :hello
end
p HelloModule::Version
HelloModule::hello("Alice")
include HelloModule
p Version
hello("Alice")
Case2
#Case2
module HelloModule2
Version = "1.0"
def hello(name)
puts "Hello," + name
end
end
Class SaySth2
include HelloModulu2
end
p SaySth.new.hello
Case3
#Case3
module HelloModule3
Version = "1.0"
def self.hello(name)
puts "Hello," + name
end
end
class HelloCLass4
Version = "1.0"
def self.hello(name)
puts "Hello," + name
end
end
Class SaySth3
extend HelloModulu3
end
Class SaySth4
extend HelleClass4
end
Case1 和 Case 2 我基本可以理解
Case3 我就彻底对 Module 和 Class 的区别产生了混淆,甚至对include
和extend
也产生了混淆,求大神笼罩。