peau ou caret), c'est à dire:
* Comment peut-on retourner une valeur d'un block ou d'une méthode?
* Quelles sont les valeurs de retour par défaut?
Il y a 4 cas à considérer:
* Une m... ilise pas le chapeau pour faire un return.
===== Retourner une valeur depuis une méthode =====
<code smalltalk>
Number>>squared
"Retourne le receveur multiplié par lui même."
^ self *
nt l'exécution de l' expression ci-dessus ne nous retourne que la valeur 2. Alors pourquoi est-ce qu'on ob... e dans la classe "Set", on voit que cette méthode retourne son paramètre.
Dans l'expression "Set new add... n envoie le message "add: 2"
* La méthode add:2 retourne son paramètre, c'est-à-dire 2.
Avec l'express... ussi bien être vide, et ne faire rien du tout que retourner son receveur.
Cette méthode, a priori, ne fai
today à l'objet Date qui est une classe, et ça me retourne la date du jour.
Voici trois autres exemples:... rgument une URL, l'url d'un fichier png, et ça me retourne le fichier png téléchargé.
<code smalltalk>
Zn... thValue:''** dans la classe **''Counter''**, pour retourner un nouveau compteur avec en valeur initiale la... e smalltalk>
Counter withValue: 10
</code>
nous retourne un nouvel objet compteur qui commencerait à la
r. Et enfin, on a le chapeau qui est utilisé pour retourner une valeur et quitter la méthode. Alors concernant le retour, par défaut, en Pharo, toutes les méthodes retournent self donc l'objet en cours. Donc, le code qui est a... de private, etc. Par défaut, toutes les méthodes retournent le receveur, c'est-à-dire self et on peut uti
>
Si on exécute cette expression, on voit qu'elle retourne bien une erreur.
Si on encapsule cette express... en, donc je n'ai pas d'erreur.
Le block nous est retourné, parce qu'en fait la définition d'un block n'ex... contient une erreur, évidemment l'erreur va être retournée au moment de l'évaluation du bloc.
C'est le c... age value au bloc et on a bien une erreur qui est retournée.
Les blocs en fait peuvent aussi avoir des ar
edCOllection at: 2
"> 'hates' "
</code>
Le code retourne ''**'hates'**'' la même chose.
Les collections... est bien ajouté à la fin de la collection (valeur retournée ligne 18).
J'ai des méthodes de conversion en... un Set dans lequel les doublons ont été retirés (retour ligne 4).
Ou alors je peux accéder à la version ... e>
Et puis si je demande à une association de me retourner sa valeur ça ne me retourne que la valeur.
C'
block va créer une collection qui sera finalement retournée par la méthode. On verra l'utilisation de cett... est envoyer le message next (ligne 6) qui va nous retourner l'élément juste après la position courante.
D... t 0 donc on se situe au début du stream, ''next'' retourne au début le premier élément, c'est-à-dire le ca... ge ''upTo:'' et un élément (ligne 14). La méthode retourne tous les éléments entre la position courante et
. La méthode ''area'' est trouvée ici et elle est retournée. L'algorithme de Lookup a fini son travail une... qui s'appellerait ''color''. Il la trouve, il la retourne.
Si maintenant on envoie le message ''area'' à... uper classe. Il la trouve, l'algorithme de Lookup retourne cette méthode.
===== self =====
**''self'' re... sein de ''B'', il l'exécute, et on obtient 50 en retour.
Le même message ''foo'' est résolu différemment
mment. la méthode ''bar'' est exécutée et ''foo'' retourne 10.
<code smalltalk>
B new bar
"> 20"
</code>
... r.
Il faut maintenant que je calcule la somme de retours de ''super bar''et de ''self foo''.
* ''self f... 'est celui qui est dans la classe A. ''self foo'' retourne 10.
* ''super bar'' : ''super'' désigne égale... et c'est cette méthode-là qui est exécutée, elle retourne 10.
Au final la méthode ''B>>bar'' retournera
te, on transmet le message ''raisedTo:'', ça nous retournera 32.
Là, c'est un exemple un peu plus funky:
... message ''class'' est envoyé à l'entier ''1'', il retourne sa classe ''SmallInteger''. Le message ''maxVal'' est ensuite envoyé à la classe. La valeur retournée est le plus grand nombre que peut encoder la ... .
Autre exemple:
<code>
" L'expression suivante retourne une erreur"
0@0 extent: 100@100 bottomRight
"M
d je veux avoir une séquence de message.
J'ai le retour, ça veut dire, une fonction ou une méthode va ren... r dans des variables d'instance, ils peuvent être retournés et ça nous sert, par exemple, pour les trigger... iques et virtuelles** et que, **par défaut, elles retournent self**.
Quand on est dans le browser de code... rmet de définir des langages qu'on appelle Domain Specific Languages.
[[000_start|⌂ Retour au sommaire]]
ter certains éléments)
* ''detect:'' (itérer et retourner le premier élément correspondant au critère)
* ''detect:ifNone:'' (itérer, retourner le premier élément correspondant au critère ou... llection qui est impair, donc 11. Ici ''detect:'' retourne bien un élément, pas une collection.
Dans cer
le, je vais calculer pi r²;
* etc.
Au final je retournerai le résultat: la somme de ces aires. **Quel e... éométrique va définir une méthode aire qui va lui retourner la bonne définition. Quel est l'avantage?
Déj
aleur produite après le curseur (appuyer sur <key>retour arrière</key> pour effacer le résultat)
* **Ins... nné, l'évaluation peut être affochée via <key>ctrl</key>+<key>p</key>
[[000_start|⌂ Retour au sommaire]]
est vrai.
Dans ce deuxième exemple, l'expression retourne false sans avoir évalué le contenu du block pas... onc "Weather isRaining" est une expression qui va retourner un booléen. On passe en paramètre de ce messag