我有兩個模塊,Foo
和Bar
。每個人都有所謂Errors
一個命名空間的模塊包含錯誤的類像這樣:紅寶石 - 包括兩個模塊,都有一個子模塊同名
module Foo
module Errors
class FooError < StandardError
def initialize
super "I'm a FooError"
end
end
end
end
module Bar
module Errors
class BarError < StandardError
def initialize
super "I'm a BarError"
end
end
end
end
我想include
在我的課,這些模塊被稱爲Baz
雙方並能夠訪問這兩個Errors
模塊。像這樣:
class Baz
include Foo
include Bar
p Errors::FooError.new
p Errors::BarError.new
end
紅寶石拋出一個錯誤uninitialized constant Bar::Errors::FooError
當試圖實例化FooError
但不是BarError
。
我能正確理解Bar::Errors
模塊是否覆蓋了Foo:Errors
模塊?如何防止發生/完成能夠引用Baz
中的兩種類型的錯誤?
謝謝!
您在任何給定的時間只能使用一個名稱空間。你爲什麼故意在兩個有衝突的事情上調用include?最好避免這種情況,只要用長的正式名稱來引用它們。 – tadman
我猜'Foo'和'Bar'通常會有比它們更多的衝突模塊。 – Max
只需搭上@tadman的答案,如果你真的需要這樣設置,你需要更明確地給他們打電話。像:'p Foo ::錯誤:: BarError.new' – Anthony