Ich möchte etwas tun, wenn sich der Inhalt eines Hashes ändert. I Unter eingestuft Hash
und überwog die Methode []=
wie folgt aus:Hook zum Ausführen, wenn sich der Inhalt eines Hashes ändert
def []= (key,val)
super(key,val)
puts 'do something'
end
Aber es funktioniert nicht, wenn ich merge
nennen. Was ist der richtige Weg? Muss ich jede Methode überschreiben, die den Hash aktualisiert?
Wenn Sie 'merge' aufrufen, nennen Sie' merge', nicht '[] ='. –
@AndreyDeineko so möchte ich eine Methode aufrufen, wenn der Inhalt des Hash ändert ob durch '[] =' oder 'merge' – Flora
_Sidenote: _ Unterklasse' Hash' für das ist eine ** sehr schlechte Idee **, da Ruby Hashes sind hoch optimiert und dieser Ansatz ruiniert einfach alles, Ruby-Code vor banalen alten guten 'C'-Aufrufen. – mudasobwa