包括模块和嵌入模块有什么区别?
问题描述:
module Superpower
# instance method
def turn_invisible
...
end
# module method
def Superpower.turn_into_toad
...
end
module Fly
def flap_wings
...
end
end
end
Class Superman
include Superpower
...
def run_away
# how to call flap_wings?
# how to call turn_invisible?
end
def see_bad_guys(bad_guy = lex_luthor)
#is this correct?
Superpower.turn_into_toad(bad_guy)
end
end
嗨,我看到了一些我无法理解的ruby代码。你如何从超人班级呼叫flap_wings?是否有可能从类内调用实例方法?包含模块和嵌入模块有什么区别?为什么和什么时候应该这样做?包括模块和嵌入模块有什么区别?
答
我假设,当你说嵌入模块时,你的意思是来自你的例子的“飞”模块嵌入“超级大国”。
如果是这样的话,我会称之为嵌套模块。我唯一使用嵌套模块的时候是嵌套模块专门处理主模块,这样Fly中的代码与Superpower直接相关,但为了方便和易读而分开。
你可以简单地通过包括超级大国首先使用嵌套模块的方法,再飞第二,像这样:
Class Superman
include Superpower
include Fly
# ...
end
的细节描述上进一步this blog。
如果您不介意,我添加了更多标签以更加精确。 – Keltia 2009-01-19 23:29:34