2013-02-27 80 views
2

以下兩段代碼是否有區別?Ruby常量和命名空間

# 1st snippet 
class A 
    class B 
    # some code here 
    end 
end 

# 2nd snippet 
class A::B 
    # some code here 
end 

如果是有區別的,你能不能幫我理解上的差異是什麼,爲什麼要使用一個版本與其他?

回答

1

這似乎主要是用於組織您的代碼的語法糖 - 無論哪種方式對您而言都是「正確」的方式。唯一的例外是在第二個片段中,如果尚未定義class A,則會出現錯誤。在大多數情況下,這個問題是this one的重複,但由於您將類嵌套在類中而不是模塊中的類中,因此我會繼續並鏈接Module docs,它解釋了Ruby中模塊和類之間的區別,並可能有所幫助你在你自己的問題的背景下解釋SO的答案。