包含模塊如何影響範圍?具體地,在這個例子中:Ruby類,包含和範圍
module ModuleA
class ClassA
def initialize
puts "test passed"
end
end
end
module ModuleB
include ModuleA
# test 1
C = ClassA.new
class ClassB
def initialize
c = ClassA.new
end
end
end
# test 2 and 3 fail without this
#include ModuleB
module ModuleC
# this doesn't help
include ModuleB
# test 2
ClassB.new
# test 3
ModuleB::ClassB.new
end
試驗1工作正常,但試驗2和測試3失敗而不註釋的import ModuleB
。
- 爲什麼範圍
ClassA
的ModuleB
(測試1)內而不是在ClassB
? - 爲什麼
import ModuleB
將ClassA
納入ClassB
的範圍?
對於** test2 **和** test3 **來說,您需要在'ClassB'內部包含'ModuleA',或者讓'ClassB
derp