Ruby поддерживает только методы экземпляра, но класс также является экземпляром класса Class. Когда вы добавляете методы к экземпляру (включая экземпляр класса, то есть класс), вы действительно меняете класс экземпляра на новый анонимный подкласс того, чем он был, а затем добавляете новый метод экземпляра к этому подклассу. Этот анонимный подкласс часто называют собственным классом.
class Foo
def self.one; 1 end
class << self
def two; 2 end
end
end
puts Foo.singleton_methods.inspect # => ["two", "one"]
казали, что вышеупомянутые методы «один» и «два» концептуально различны, но я не понимаю, как это сделать. Оба они - одноэлементные методы - в чем разница в концепции и применении?