:: 在 ruby 中包含模块之前的用途
Purpose of :: before include module in ruby
下面两个include语句有什么区别:
include ::Module1:Module2
和
include Module1::Module2
两者都适用于我的情况。但是,我只是想知道哪个更好(或者两个都很好)。
调用 ::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
实际上会实例化在 YourModule
之外定义的 YourClass
class 的实例,而调用 #new_inner_class
会实例化YourModule::YourClass
因为它是相对于 YourModule
.
并在其中调用的
希望对您有所帮助!
下面两个include语句有什么区别:
include ::Module1:Module2
和
include Module1::Module2
两者都适用于我的情况。但是,我只是想知道哪个更好(或者两个都很好)。
调用 ::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
实际上会实例化在 YourModule
之外定义的 YourClass
class 的实例,而调用 #new_inner_class
会实例化YourModule::YourClass
因为它是相对于 YourModule
.
希望对您有所帮助!