以下两个包含语句之间有何不同:
include ::Module1:Module2
和
include Module1::Module2
两者都适用于我的情况。但是,我只是想知道哪一个更好(或者两者都更好)。
答案 0 :(得分:0)
调用::Module1::Module2
将引用顶级命名空间,而不是执行语句的相对命名空间。
这在您尝试引用其他模块中的顶级模块的情况下非常有用,例如:
class YourClass
end
module YourModule
class YourClass
end
def self.new_outer_class
::YourClass.new
end
def self.new_inner_class
YourClass.new
end
end
通过上述设置,调用#new_outer_class
实际上会实例化在YourClass
之外定义的YourModule
类的实例,而调用#new_inner_class
将实例化YourModule::YourClass
,因为它在YourModule
内相对并被调用。
希望有所帮助!