2014-01-22 35 views
4

在Ruby中,可以在模塊定義之外放置require語句嗎? require'd模塊是否仍然可以在嵌套在模塊中的類中使用?在模塊定義之外放置Ruby`require`?

例如,是這樣的:

require 'baz' 
module Foo 
    class Bar 
    # some code using Baz 
    end 
end 

與此相同?

module Foo 
    require 'baz' 
    class Bar 
    # some code using Baz 
    end 
end 

和這個一樣嗎?

module Foo 
    class Bar 
    require 'baz' 
    # some code using Baz 
    end 
end 
+0

是的,可以放在室外。 –

+0

@DaveNewton最佳做法是什麼? –

+2

@ArupRakshit我幾乎完全看到文件頂部的'require's。我認爲這是直接查看所有依賴項的好方法。 –

回答

6

你可以把require任何地方。正如您在文檔here中看到的那樣,來自所需文件的常量和全局變量總是添加到全局名稱空間中。最佳做法通常是使用需要任何嵌套的外面,但一些寶石採取的事實,即它可在任何地方有條件地需要基於Ruby的邏輯文件的優勢,即

if some_boolean 
    require 'file' 
end 
2

require只需運行該文件中的代碼。這是完全不相關的,你把它放在哪裏。它取決於文件中的代碼,會發生什麼,而不是調用require的位置。

相關問題