Pharo / Squeak - Comment puis-je parcourir rapidement la mise en œuvre d'une méthode donnée dans une classe donnée?
-
14-11-2019 - |
Question
Disons que je veux voir comment la "copie" est mise en œuvre dans la classe de dictionnaire. Actuellement, j'utilise le navigateur système et traverse manuellement la hiérarchie d'héritage (bas en haut) jusqu'à ce que je trouve la classe qui implémente le message donné. Y a-t-il une ligne unique pour l'espace de travail, qui ouvrirait le navigateur système au bon endroit?
La solution
( SomeClass whichClassIncludesSelector: #initialize ) browse
Cela parcourera la classe qui implémente le message #Initialize.
Autres conseils
Personnellement, je tape simplement le #Selector dans un espace de travail, le met en surbrillance et appuye sur Alt + M pour tirer tous les implémentateurs du message. Beaucoup plus rapide que de taper tout ce code.
(SomeClass >> # Someselector) Parcourir
fonctionne aussi bien dans mon image pharo.
fonctionne aussi bien dans mon image pharo. Et puisque vous voulez d'abord trouver une classe, vous pouvez le combiner avec l'exemple précédent.
((Somesubclass WhichClassincludeSelector: #Someselector) >> # Someselector) Parcourez
pour aller directement à la méthode donnée.
Si vous utilisez omnibrowser, vous pouvez utiliser le menu contextuel Implémentateurs de la hiérarchie ... pour parcourir uniquement les implémentors d'un sélecteur dans la hiérarchie du Dictionary
.
Omnibrowser fournit également un Navigateur d'héritage. Sélectionnez toute implémentation de #copy
et cliquez sur le Inheritance
bouton dans la barre d'outils. Il vous montrera une vision hiérarchique de tous les implémentateurs de #copy
.