我在玩Ruby模塊。Ruby中的命名空間混亂
這只是正常:
module Mod1
def hello
"Hello from mod 1"
end
end
module Mod2
def hello
"Hello from mod 2"
end
end
class Foo
include Mod1
include Mod2
end
f = Foo.new
puts f.hello
# output: "Hello from mod 2"
這不起作用:
module Mod1
def hello
"Hello from mod 1"
end
end
module Mod2
def hello
"Hello from mod 2"
end
end
class Foo < BasicObject
include Mod1
include Mod2
end
f = Foo.new
puts f.hello
# output: in `<class:Foo>': uninitialized constant Foo::Mod1 (NameError)
這工作:
module Mod1
def hello
"Hello from mod 1"
end
end
module Mod2
def hello
"Hello from mod 2"
end
end
class Foo < BasicObject
include ::Mod1
include ::Mod2
end
f = Foo.new
puts f.hello
能否請您解釋一下爲什麼?
錯誤的模塊是一個類中是明確的。我所缺少的是一個概念,即頂層的所有東西都在'對象'範圍內。謝謝! – Shinigami