在 ruby​​ 中,我开始看到一种非常正常的做法,包括引用为::ModuleName::ClassName 的模块和 mixin,而在过去,它几乎只是 ModuleName::ClassName。

我想在这里得到的是对为什么最近越来越多地看到这种做法以及它的作用有何不同的正确理解。

有什么不同?

有什么好处(如果先前没有回答这个问题)?

预先感谢您的意见。

最佳答案

如果将 :: 放在开头,则表示您指的是全局 namespace ,否则,您指的是当前 namespace 。

通常,如果您的类/模块中没有同名的类/模块,则不需要在开始时使用 ::

class Customer

  def to_s
    "Customer global"
  end

end


class Order

  class Customer
    def to_s
      "Customer within order"
    end
  end


  def initialize
    puts Customer.new
    puts ::Customer.new
  end


end

Order.new

会打印出来
Customer within order
Customer global

关于ruby-on-rails -::ModuleName::ClassName 和 ModuleName::ClassName 有什么区别,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9398095/

10-10 16:51
查看更多