class Class-экземпляр против методов класса

Как это работает? Когда выполняется следующее "hi from class" печатается дважды. Что происходит внутри ruby, чтобы заставить это вести себя так? Разве я на самом деле не делаю метод экземпляра для class

class Class
  def foo
    puts "hi from class" 
  end
end

Class.foo
x = Class.new
x.foo

1 ответов


Я не знаю, знаете ли вы об этом, но когда вы делаете class Class ... end вы создаете новый класс с именем Class, вы открываете существующий класс Class.

С Class является классом, что все классы являются экземплярами, что означает, что Class - это экземпляр себе. И из-за этого вы можете вызвать методы экземпляра Class непосредственно на Class так же, как и в любом другом классе.