Suche…


Affe beim Patchen einer Klasse

Beim Affen-Patching werden Klassen oder Objekte außerhalb der Klasse selbst geändert.

Manchmal ist es nützlich, benutzerdefinierte Funktionen hinzuzufügen.

Beispiel: Überschreiben Sie die String-Klasse, um Boolean analysieren zu können

class String 
  def to_b
    self =~ (/^(true|TRUE|True|1)$/i) ? true : false
  end
end

Wie Sie sehen, fügen wir die to_b() -Methode der String-Klasse hinzu, sodass wir jeden String in einen booleschen Wert parsen können.

>>'true'.to_b 
=> true
>>'foo bar'.to_b
=> false

Affe beim Patchen eines Objekts

Wie beim Patchen von Klassen können auch einzelne Objekte gepatcht werden. Der Unterschied ist, dass nur diese eine Instanz die neue Methode verwenden kann.

Beispiel: Überschreiben Sie ein String-Objekt, um Boolean analysieren zu können

s = 'true'
t = 'false'    

def s.to_b
  self =~ /true/ ? true : false
end

>> s.to_b
=> true
>> t.to_b
=> undefined method `to_b' for "false":String (NoMethodError)


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