Ruby Language Réouverture (correction de singe) Classes Singleton


Exemple

Il existe trois façons de rouvrir une classe Singleton

  • Utiliser class_eval sur une classe singleton.
  • Utilisation de la class << block
  • Utilisation de def pour définir une méthode directement sur la classe singleton de l'objet
class Example
end

Example.singleton_class.class_eval do
  def foo
    :foo
  end
end

Example.foo #=> :foo

class Example
end

class << Example
  def bar
    :bar
  end
end

Example.bar #=> :bar

class Example
end

def Example.baz
  :baz
end

Example.baz #=> :baz

Chaque objet a une classe singleton à laquelle vous pouvez accéder

class Example
end
ex1 = Example.new
def ex1.foobar
  :foobar
end
ex1.foobar #=> :foobar

ex2 = Example.new
ex2.foobar #=> NoMethodError