Das Buch enthielt nützliche Informationen zur Ahnenmethode, daher habe ich sie zusammengefasst.
Anerkennung bisher
class Mountains
end
class Nepal < Mountains
def everest_place
"nepal"
end
end
p Nepal.ancestors
p Nepal.class.superclass.superclass.superclass
Ausgabeergebnis
[Nepal, Mountains, Object, Kernel, BasicObject]
BasicObject
Es ist unpraktisch, die Vererbungsbeziehung einzeln mit Superklasse zu verfolgen. Ich erkannte, dass es praktisch wäre, die Vorfahrenmethode zu verwenden, um alles von der aktuellen Klasse bis zu BasicObject als Array abzurufen. (Einschließlich Module)
Neue Anerkennung
module World
def everest_place
"china"
end
end
class Mountains
def everest_place
"india"
end
end
class Nepal < Mountains
include World
def everest_place
"nepal"
end
end
p Nepal.ancesters
nepal = Nepal.new
puts nepal.everest_place
Wie oben beschrieben, ❶ Die Nepal-Klasse enthält das World-Modul, sodass Sie die everest_place-Methode des World-Moduls verwenden können. ❷ Da die Nepal-Klasse die Mountains-Methode erbt, kann auch die everest_place-Methode der Moutains-Klasse verwendet werden.
** Angenommen, Sie haben drei everest_place-Methoden, einschließlich der everest_place-Methode in der Nepal-Klasse ** Natürlich ändert sich die Ausgabe abhängig davon, welche everest_place-Methode aufgerufen wird.
Die Vorfahrenmethode ist in solchen Fällen nützlich. Betrachtet man die Ausgabe von p Nepal.ancestors,
Nepal.Ausgabeergebnis der Vorfahren
[Nepal, World, Mountains, Object, Kernel, BasicObject]
Es wird angezeigt. ** Da es in der Reihenfolge von links aufgerufen wird, können Sie sehen, dass die in der Nepal-Klasse definierte everest_place-Methode abgerufen wird. ** ** **
Lassen Sie uns das Ergebnis sehen.
Ausgabeergebnis
nepal
Der Rückgabewert der in der Nepal-Klasse definierten everest_place-Methode wurde ordnungsgemäß zurückgegeben.
Recommended Posts