模塊之間是什麼以下兩種包含語句的不同:目的::之前包括紅寶石
include ::Module1:Module2
和
include Module1::Module2
無論是在我的情況下工作。但是,我只是想知道哪一個更好(或者兩者都很好)。
模塊之間是什麼以下兩種包含語句的不同:目的::之前包括紅寶石
include ::Module1:Module2
和
include Module1::Module2
無論是在我的情況下工作。但是,我只是想知道哪一個更好(或者兩者都很好)。
調用::Module1::Module2
將引用頂級命名空間,而不是執行語句的相對名稱空間。
這是在你試圖到另一個模塊中引用的頂層模塊,像這樣的情況非常有用:
class YourClass
end
module YourModule
class YourClass
end
def self.new_outer_class
::YourClass.new
end
def self.new_inner_class
YourClass.new
end
end
通過以上的設置,調用#new_outer_class
實際上實例YourClass
類的實例在YourModule
之外定義,而呼叫#new_inner_class
將實例化YourModule::YourClass
,因爲它與YourModule
相關並且被呼叫。
希望有幫助!
這是否意味着在我的情況下都可以互換? –
在您的具體情況下,他們將有效地達到相同的結果。然而,使用':: Module1 :: Module2'會在'Module1'之上添加另一個名稱空間級別。 – Zoran
SymbolHound是你的朋友:http://symbolhound.com/?q=ruby+%3A%3A –