[RUBY] À propos de la méthode des ancêtres

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

À propos de la méthode des ancêtres
À propos de la méthode
Sortie sur la méthode, partie 2
À propos de la méthode cartographique
À propos de la méthode to_s.
Sortie sur la méthode Partie 1
Prise en compte de la méthode des temps
À propos du rôle de la méthode initialize
À propos du paquet
À propos de Aucune erreur de méthode
À propos de la classe StringBuilder
Commentaire: à propos de l'interface
À propos du pipeline d'actifs
À propos de la liaison de méthode Java
À propos de l'opérateur ternaire
A propos des méthodes de fractionnement (Java)
À propos du module Kernel
[Sortie] À propos de la base de données
À propos de la gestion de Null
A propos de la spécification du chemin JAXRS
Notez la méthode StringUtils # containsAny
Quelle est la méthode pluck?
Remarques sur la portée
À propos de la description de Docker-compose.yml
[Java Silver] À propos de la méthode equals
Comprendre la méthode d'assistance form_with
À propos de l'explication sur le type de fonction
À propos du langage de programmation Crystal
À propos de la méthode de raclage des rails Mechanize
Quelle est la méthode d'initialisation?
Comment utiliser la méthode link_to
À propos du comportement de ruby Hash # ==
À propos de la langue à apprendre à partir de maintenant
Comment utiliser la méthode include?
Comment utiliser la méthode form_with
À propos des bases du développement Android
À propos des méthodes equals () et hashcode ()
À propos du symbole <%%> dans Rails erb
À propos de la bande d'applications de partage d'informations
Comparaison Java à l'aide de la méthode compareTo ()
À propos de l'environnement de développement actuel (Java 8)
J'ai essayé d'expliquer la méthode
Un murmure sur la classe utilitaire
[Rails] À propos de la méthode d'assistance form_with [Basic]
Pensez aux 7 règles d'Optionnel
À propos =
[Rails 6] détruit en utilisant la méthode des ressources
À propos du niveau de journalisation de java.util.logging.Logger
Appelez la super méthode en Java
Mes réflexions sur la méthode d'égalité (Java)
Devinez le cadre de persistance Java 2017 (3) Reladomo
Vérifiez à nouveau la commande OpenSSL