Innerhalb einer Methode zur Laufzeit gibt es eine Möglichkeit zu wissen, ob diese Methode über super
in einer Unterklasse aufgerufen wurde? Z.B.Wird die aktuelle Ruby-Methode über Super aufgerufen?
module SuperDetector
def via_super?
# what goes here?
end
end
class Foo
include SuperDetector
def bar
via_super? ? 'super!' : 'nothing special'
end
end
class Fu < Foo
def bar
super
end
end
Foo.new.bar # => "nothing special"
Fu.new.bar # => "super!"
Wie könnte ich schreiben via_super?
, oder, wenn nötig, via_super?(:bar)
?
Leider funktioniert das nicht, wenn Eltern und Kind 'SuperDetector' enthalten. – Stefan
@Stefan 'außer instance_methods.include?' – mudasobwa
@mudasobwa das würde verhindern, dass das Kind' SuperDetector' verwendet – Stefan