在 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/