What does ::MyClass Ruby scope operator do?

What does the ::MyClass/MyModule scope operator do in Ruby, what is its purpose?

9
задан kiamlaluno 30 August 2010 в 07:09
поделиться

1 ответ

Это явно относится к MyClass в глобальной области. Если в глобальной области есть MyClass, а также MyClass внутри SomeModule, ссылка на MyClass внутри SomeModule будет ссылаться на MyClass внутри модуля, а не на глобальный MyClass. Выражение ::MyClass явно относится к MyClass в глобальной области видимости.

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
18
ответ дан 4 December 2019 в 10:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: