2012-02-20 80 views
2

我有一個紅寶石模塊,其中包含許多其他模塊。這裏有一個簡單的例子:模塊內的紅寶石模塊

module Foo 

    module Bar 
    end 

    module Baz 
    end 

end 

除了,我喜歡6-7模塊裏面的Foo模塊。有沒有一種方法可以將Bar/Baz放在單獨的文件中,但仍然可以獲得相同的行爲?現在我的所有代碼都在1個文件中,非常無組織。

回答

13

可以定義他們這樣,在每一個單獨的文件:

# foo.rb 
module Foo 
end 

# foo_bar.rb 
module Foo::Bar 
end 

# foo_baz.rb 
module Foo::Baz 
end 

NB。您需要定義Foo模塊,然後能夠使用此表示法定義模塊,如Foo::Bar

或者你可以把他們在不同命名的文件中,他們目前是在格式,它應該仍然工作:

# foo_bar.rb 
module Foo 
    module Bar 
    end 
end 

# foo_baz.rb 
module Foo 
    module Baz 
    end 
end 
+0

啊,真棒!謝謝。 – 0xSina 2012-02-20 12:46:57

+0

沒問題!樂意效勞。 – Russell 2012-02-20 12:48:15

+1

@Pragma一次注意,如果你已經使用'module Foo'定義了'Foo',那麼你只能使用'module Foo :: Bar',否則你會得到一個錯誤。 – matt 2012-02-20 13:14:34