Lors de l'envoi d'un message à un objet dans Squeak, l'algorithme d'appel d'exécution est quelque chose commeDans Squeak, où trouver le code de l'algorithme de gestion des messages?
- Curr < - la classe de récepteur
- Répéter tout Curr est non nul
- Rechercher le sélecteur dans les méthodes de cette classe; si elle est là, l'invoquer et de retour
- curr < - superclasse de curr
- Appel
doesNotUnderstand:
surself
Maintenant, un algorithme très similaire est utilisé pour la méthode respondsTo:
, et en effet, il peut être vu en inspectant le code de respondsTo:
. Ce que j'essaie de trouver est l'emplacement du code pour l'algorithme ci-dessus utilisé pour l'invocation. Je sais que perform:
fait quelque chose de similaire mais je crois qu'il n'est pas utilisé pour l'invocation de méthode régulière mais seulement comme mécanisme d'appel de méthode de réflexion (par exemple quand le nom de la méthode n'est pas connu du programmeur avant l'exécution).
Si le code ci-dessus est également masqué comme directive primitive, où trouver l'appel primitif? Si ce n'est pas le cas, où trouverais-je le code lui-même?
RE "compilation" - J'ai modifié la question pour clarifier ce que je voulais dire. – Oak
Je vais ajuster ma réponse en conséquence. –