"Trouver des méthodes avec le Finder"
Quentin Ducasse.
-Bonjour à tous.
Dans cette vidéo, on s'intéressera à un outil appelé le Finder.
On le trouve en allant dans le menu Pharo,
puis l'onglet Tools et enfin, Finder.
Cet outil permet de rechercher dans l'environnement Pharo
des méthodes, des exemples, etc.
Par exemple, imaginons qu'on cherche le mot "match"
dans les noms des méthodes, donc Selectors.
Si on cherche pour ça, on va voir
toutes les méthodes du système qui ont "match" inclus dans leur nom.
Donc, on peut voir les méthodes en cliquant dessus.
On va voir le corps de méthode qui est en dessous. Voilà.
On peut voir la classe qui les implémente entre parenthèses.
Si jamais on a le triangle sur la gauche,
ça va être les classes qui implémentent la méthode avec le même nom.
Par exemple, si on a deux classes qui implémentent cette méthode-là.
En cliquant ici, on peut aller voir la différence entre les deux
et on peut aussi, en cliquant sur Browse,
arriver directement sur la méthode dans le système Browser.
Même si c'est très utile, il y a des cas où c'est plutôt le comportement
que notre fonction aimerait avoir sans savoir son nom,
et c'est un cas où on peut utiliser des exemples.
Donc, on va cliquer sur Exemples
et imaginons qu'on cherche une méthode qui a une chaîne de caractères "ab*"
et une autre chaîne de caractères "abcd" va appliquer cette méthode
et nous renvoyer "true".
On peut écrire ça comme ça, séparer les paramètres par des points
et mettre le résultat en dernier.
Si on clique sur Search, on va voir toutes les méthodes qui ont rendu "true"
en prenant comme argument les deux arguments qu'on lui a passés.
Une méthode qui pourrait nous intéresser, c'est le "match" qu'on cherchait avant.
Si on déroule en cliquant sur le triangle,
on verra toutes les classes du système
qui implémentent une méthode qui s'appelle "match".
Si on descend, on arrive à "*String", celle avec l'étoile sur la gauche.
Ça veut dire que c'est la méthode "match" qui,
étant donné les arguments qu'on lui a donnés, a renvoyé "true".
C'est sûrement celle-là qui va nous intéresser.
On peut se servir d'autres exemples comme...
Si on met : "11.2.5", donc une espèce de division,
si on cherche, on voit qu'on arrive bien sur la division entière
et elle est particulièrement implémentée dans les "Entiers"
ou "Nombre" ou "Smallinteger".
On peut, par exemple, demander 5,5 au lieu de 5.
On obtient la division plus classique.
Si on regarde cette division, on la retrouvera dans "Fraction" ou "Nombre".
C'est un outil extrêmement puissant pour rechercher des exemples.
Une des autres choses que j'aimerais vous montrer, c'est...
Par exemple, imaginons qu'on cherche une méthode
qui prend comme argument un tableau avec trois entiers,
qui prend un autre entier, par exemple 4,
et qui va nous renvoyer le premier élément.
On aimerait qu'il recherche dans le premier, le deuxième, le troisième
et qu'il reboucle pour nous rendre le premier élément.
Donc, si on cherche ça, on va avoir "atWrap"
qui va nous rendre ce qu'on lui a demandé.
On voit que c'est défini dans "Array" et "SequenceableCollection".
Si on regarde les méthodes définies dans ces deux classes,
on peut voir que les deux ont des commentaires entre guillemets
qui ne sont pas de la même couleur que les autres.
Ceux-là ont la couleur d'un code normal.
C'est parce que ce sont des exemples qu'on peut exécuter nous-mêmes.
Si on veut avoir une idée de comment la fonction fonctionne,
on a juste à le surligner, puis l'imprimer, donc Cmd+P.
Et voilà. On peut voir le résultat.
Ces exemples-là sont très intéressants
et vous pouvez les trouver définis dans plusieurs méthodes
pour vous expliquer comment elles fonctionnent.
Une des autres choses que permet le Finder,
c'est de chercher des pragmas.
Si, par exemple, on cherche "menu" et qu'on sélectionne l'onglet Pragmas...
Si on cherche pour ça, on verra que les pragmas sont définies...
Là, on peut avoir la pragma "contextMenu". Elle a été trouvée.
On peut la chercher dans, par exemple, cette classe-ci.
On va voir la pragma qui est là.
Les pragmas sont des annotations
pouvant être utilisées plus tard par le système
pour fonctionner de manière différente et faire des requêtes.
Par exemple, ici, ça va être utilisé dans l'interface graphique de Pharo.
Et si on veut chercher le mot "menu" mais dans tout le code source du système,
on peut cliquer sur Source.
Là, il va nous analyser toutes les sources du système
de toutes les méthodes pour chercher le mot "menu"
que ce soit dans le nom de la méthode...
Ici, il n'y est pas, mais ici, il y a "menu".
Ou ça peut être... On va avoir ici, "FTTableMorph".
Ce n'est pas dans le nom de la classe non plus,
mais on peut voir que le mot "Menu" est utilisé par cette méthode-là.
Source prend plus de temps, car il regardera toutes les méthodes de Pharo,
mais il donne un résultat qui est soit dans le nom de la méthode,
soit dans le nom de la classe, soit dans le corps de la méthode lui-même.
C'était une vidéo qui parlait du Finder.
C'est un outil très puissant que je vous encourage à utiliser
surtout quand il est couplé avec les exemples
pour retrouver un comportement.
Ça peut vous permettre de vous rappeler les exemples
qui sont donnés dans les commentaires de méthodes.