當我使用include C
時,我非常困惑爲什麼模塊B和C中的方法混入模塊A中的類中。是否以某種方式遞歸地混合名稱空間下的所有類?爲什麼Ruby包含污染不相關的類?
module A
class AClass
def a_method_
end
end
end
module B
extend self
def b_method_
end
end
module C
extend self
include B
def c_method_
puts A::AClass.new.methods.grep /_method_/
end
end
C.c_method_
puts "----"
include C
c_method_
有了結果,之前包括,在ACLASS實例正確只有方法a_method_,但畢竟有它可以訪問其他兩種方法爲好。
a_method_
----
a_method_
c_method_
b_method_
有人可以幫忙解釋一下嗎?
這很有道理!我認爲把'include B'放在'module C'中並不污染'class A'的事實讓我感到困惑。我不明白爲什麼當它放在'main'上下文中時遞歸地工作,但當嵌入到模塊中時卻沒有。 –