2013-02-27 45 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的答案。