两者之间有什么区别:

module Outer
  module Inner
    class Foo
    end
  end
end

和这个:
module Outer::Inner
  class Foo
  end
end

我知道如果前面没有定义Outer,则后一个示例将不起作用,但是在恒定范围内还有一些其他差异,我可以在SO或文档中找到它们的描述(包括Ruby编程书)

最佳答案

至少有一个区别-常量查找,请检查以下代码:

module A
  CONST = 1

  module B
    CONST = 2

    module C
      def self.const
        CONST
      end
    end
  end
end

module X
  module Y
    CONST = 2
  end
end

module X
  CONST = 1

  module Y::Z
    def self.const
      CONST
    end
  end
end

puts A::B::C.const # => 2, CONST value is resolved to A::B::CONST
puts X::Y::Z.const # => 1, CONST value is resolved to X::CONST

关于ruby - 嵌套模块定义和在Ruby中的定义中使用::有什么区别?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11393169/

10-11 22:53
查看更多