Ich habe einige Probleme mit Ruby über Rückrufe (und Vererbung). Hier ist mein Code:Ruby: Wie man einen Callback durch Vererbung hakt
class Lmao
def initialize
@str = "HAHAHAHAHAHHAHAHAH"
@before_laughing = []
end
def self.inherited(base)
base.extend(Callbacks)
end
def laughing
@before_laughing.each {|method| send(method) }
@str
end
end
module Callbacks
def before_laughing(*methods)
@before_laughing = methods
end
end
class Lol < Lmao
before_laughing :downcase_please
def downcase_please
@str.downcase!
end
end
a = Lol.new
a.laughing # => "HAHAHAHAHAHHAHAHAH"
Und wie Sie sehen können, mein bevor Rückruf Lachen nicht funktionieren ... weil das Array @before_laughing leer ist. Ich glaube, das kann behoben werden, indem ich die Art und Weise, wie ich * Methoden in eine Instanzmethode von Lol (von innerhalb von Callbacks) speichere, bearbeite. Aber ich sehe nicht wirklich, wie ...
Wenn Sie die Lösung kennen, danke für Ihr Licht!
Sie haben mich LOL gemacht. Und 'LOL
Ich habe auch darüber nachgedacht. Aber Lmao ist toller als Lol, also stelle ich es auf die Spitze. – moshimoshi