开发者

What does ::MyClass Ruby scope operator do?

开发者 https://www.devze.com 2023-01-14 14:23 出处:网络
What does开发者_JS百科 the ::MyClass/MyModule scope operator do in Ruby, what is its purpose?This explicitly refers to the MyClass in the global scope.If there is a MyClass in the global scope, but al

What does开发者_JS百科 the ::MyClass/MyModule scope operator do in Ruby, what is its purpose?


This explicitly refers to the MyClass in the global scope. If there is a MyClass in the global scope, but also a MyClass inside of SomeModule, referring to MyClass from inside of SomeModule will refer to MyClass inside of the module, not the global MyClass. Saying ::MyClass explicitly refers to the MyClass in the global scope.

class MyClass
  def self.something
    puts "Global MyClass"
  end
end

module SomeModule
  class MyClass
    def self.something
      puts "SomeModule::MyClass"
    end
  end

  print "From the module: "
  MyClass.something

  print "Explicitly using global scope: "
  ::MyClass.something
end

print "From the global scope: "
MyClass.something

print "Explicitly using module scope: "
SomeModule::MyClass.something


"global scope" just means the constant is defined on the Object class. So ::SomeModule is shorthand for Object::SomeModule

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号