Nachdruck aus Blog-Artikel.
Sie können "super" verwenden, um eine übergeordnete Methode mit demselben Namen wie sich selbst aufzurufen.
def value
"Super#value"
end
end
class Sub < Super
def value
# Super#Wert aufrufen
super
end
end
p Sub.new.value
# => "Super#value"
Was ist, wenn Sie eine beliebige übergeordnete Methode von einer anderen Methode aufrufen möchten?
class Super
def value
"Super#value"
end
end
class Sub < Super
def value
"Sub#value"
end
def value2
#Hier super#Ich möchte Wert nennen
end
end
Method # super_method
In diesem Fall können Sie Method # super_method
verwenden.
Rufen Sie ein beliebiges Methodenobjekt wie folgt ab und verwenden Sie "# super_method", um das übergeordnete Methodenobjekt abzurufen.
class Super
def value
"Super#value"
end
end
class Sub < Super
def value
"Sub#value"
end
def value2
#Holen Sie sich ein Methodenobjekt mit Wert und verweisen Sie auf die übergeordnete Methode
method(:value).super_method.call
end
end
p Sub.new.value2
# => "Super#value"
Sie können auch .instance_method
verwenden, um eine Methode einer beliebigen Klasse aufzurufen, wie unten gezeigt.
class Super
def value
"Super#value"
end
end
class Sub < Super
def value
"Sub#value"
end
def value2
Super.instance_method(:value).bind(self).call
end
end
p Sub.new.value2
# => "Super#value"
Recommended Posts