Ruby常量和命名空间

时间:2013-02-27 14:28:27

标签: ruby namespaces constants

以下2段代码之间是否存在差异?

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

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

如果存在差异,您能否帮助我了解区别是什么以及为什么使用一个版本而另一个版本?

1 个答案:

答案 0 :(得分:1)

这似乎主要是用于组织代码的语法糖 - 无论哪种方式对你有意义都是“正确”的方式。唯一的例外是使用第二个代码段,如果尚未定义class A,则会出现错误。在大多数情况下,这个问题是this one的重复,但是因为你是在类中而不是在模块中的类中嵌套类,所以我将继续并链接Module docs,这解释了它们之间的区别。 Ruby中的模块和类可以帮助您在自己的问题中解释SO答案。