Il y avait des informations utiles sur la méthode des ancêtres dans le livre, alors je l'ai résumé.
Reconnaissance jusqu'à présent
class Mountains
end
class Nepal < Mountains
def everest_place
"nepal"
end
end
p Nepal.ancestors
p Nepal.class.superclass.superclass.superclass
Résultat de sortie
[Nepal, Mountains, Object, Kernel, BasicObject]
BasicObject
Il n'est pas pratique de suivre la relation d'héritage une par une s'il s'agit d'une super classe. J'ai réalisé qu'il serait pratique d'utiliser la méthode des ancêtres pour tout récupérer de la classe actuelle à BasicObject sous forme de tableau. (Y compris les modules)
Nouvelle reconnaissance
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
comme mentionné ci-dessus, ❶ La classe Nepal inclut le module World, vous pouvez donc utiliser la méthode everest_place du module World. ❷ Puisque la classe Nepal hérite de la méthode Mountains, la méthode everest_place de la classe Moutains peut également être utilisée.
** Supposons que vous ayez trois méthodes everest_place, y compris la méthode everest_place dans la classe Nepal ** Bien sûr, la sortie changera en fonction de la méthode everest_place appelée.
La méthode des ancêtres est utile dans de tels cas. En regardant la sortie de p Nepal.ancestors,
Nepal.Résultat de sortie des ancêtres
[Nepal, World, Mountains, Object, Kernel, BasicObject]
Il sera affiché. ** Puisqu'elle est appelée dans l'ordre à partir de la gauche, vous pouvez voir que la méthode everest_place définie dans la classe Nepal est récupérée. ** **
Voyons en fait le résultat.
Résultat de sortie
nepal
La valeur de retour de la méthode everest_place définie dans la classe Nepal a été renvoyée correctement.
Recommended Posts