Ruby поддерживает только методы экземпляра, но класс также является экземпляром класса Class. Когда вы добавляете методы к экземпляру (включая экземпляр класса, то есть класс), вы действительно меняете класс экземпляра на новый анонимный подкласс того, чем он был, а затем добавляете новый метод экземпляра к этому подклассу. Этот анонимный подкласс часто называют собственным классом.

class Foo

  def self.one; 1 end

  class << self
    def two; 2 end
  end

end
puts Foo.singleton_methods.inspect # => ["two", "one"]

казали, что вышеупомянутые методы «один» и «два» концептуально различны, но я не понимаю, как это сделать. Оба они - одноэлементные методы - в чем разница в концепции и применении?

Ответы на вопрос(2)

Ваш ответ на вопрос