Ruby Language
Affe Patching in Rubin
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