Suche…


Bemerkungen

Das Affen-Patchen hat zwar praktische Auswirkungen, weist jedoch einige nicht sofort erkennbare Fallstricke auf. Ein Patch wie dieser im Beispiel verschmutzt den globalen Geltungsbereich. Wenn zwei Module Hash#symbolize , wird nur das letzte erforderliche Modul angewendet. Der Rest wird gelöscht.

Wenn bei einer gepatchten Methode ein Fehler auftritt, zeigt der Stacktrace einfach auf die gepatchte Klasse. Dies impliziert, dass es einen Fehler in der Hash Klasse selbst gibt (die es jetzt gibt).

Schließlich, da Ruby sehr flexibel ist, welche Container zu halten sind, eine Methode, die beim Schreiben sehr unkompliziert erscheint, verfügt über viele undefinierte Funktionen. Das Erstellen von Array#sum ist beispielsweise für ein Array von Zahlen geeignet, unterbricht jedoch ein Array einer benutzerdefinierten Klasse.

Eine sicherere Alternative sind Verfeinerungen, verfügbar in Ruby> = 2.0.

Funktionalität hinzufügen

Sie können jeder Klasse in Ruby eine Methode hinzufügen. Das aufrufende Objekt wird mit self referenziert.

class Fixnum
  def plus_one
    self + 1
  end

  def plus(num)
    self + num
  end

  def concat_one
    self.to_s + '1'
  end
end

1.plus_one # => 2
3.plus(5) # => 8
6.concat_one # => '61'


Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow