Что делает класс ClassName <:: OtherClassName в Ruby? - PullRequest
8 голосов
/ 21 июля 2010

Вчера я нашел следующий код в RSpec :

class OptionParser < ::OptionParser

Что это делает?В чем разница между этим и class OptionParser < NameSpace::OptionParser?

1 Ответ

8 голосов
/ 21 июля 2010

Выполненный пример может лучше всего объяснить идею:

class C
  def initialize
    puts "At top level"
  end
end

module M
  class C
    def initialize
      puts "In module M"
    end
  end

  class P < C
    def initialize
      super
    end
  end

  class Q < ::C
    def initialize
      super
    end
  end
end

M::P.new
M::Q.new

Производит при запуске:

In module M
At top level
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...