Ruby 的 include 和 included
Ruby 提供了混入( Mixin )的方式使用模块( Module ),它可以让被混入的模块中的代码被其他类或者模块使用。
本章节我们将讲解其中一种混入方式:include
。
1. include
include
将会把模块里的方法包含进被执行的类的 实例方法 中。
实例:
module Person
def name
"My name is Andrew"
end
end
class Member
include Person
end
puts Member.new.name
# ---- 输出结果 ----
My name is Andrew
解释 :当类Member
包含了模块Person
之后,类Member
增加了一个名为name
的实例方法(类实例后可调用的方法)。
2. included
当我们include
了一个模块后,模块被包含后会调用一个钩子方法,这个方法名为included
。
让我们为模块Person
增加一个钩子方法。
实例:
module Person
def self.included(klass)
puts "#{klass} included #{self}"
end
def name
"My name is Andrew"
end
end
class Member
include Person
end
puts Member.new.name
# ---- 输出结果 ----
Member included Person
My name is Andrew
解释 :当模块Person
被包含后,触发了included
钩子方法,打印了“Member included Person”。
3. 小结
本章节我们学习了include
,当类include
一个模块的时候,会将模块中定义的方法填充进类的实例方法中,另外,当一个模块被include
的时候,会触发included
回调,并返回操作的类名。
本文来自互联网用户投稿,不拥有所有权,该文观点仅代表作者本人,不代表本站立场。
访问者可将本网站提供的内容或服务用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯本网站及相关权利人的合法权利。
本网站内容原作者如不愿意在本网站刊登内容,请及时通知本站,邮箱:80764001@qq.com,予以删除。
访问者可将本网站提供的内容或服务用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯本网站及相关权利人的合法权利。
本网站内容原作者如不愿意在本网站刊登内容,请及时通知本站,邮箱:80764001@qq.com,予以删除。