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
keries'' liste les boulangeries, ''bakeries/123'' retourne une boulangerie particulière, ''bakeries/123/pastries'' retourne les viennoiseries de la boulangerie 123. Par contre, ''bakeries/icecream'' ne retourne rien de valide dans notre cas.
++++
**Si vous voulez que votre API retourne la liste des viennoiseries de votre boulangerie
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
i cette sous-chaîne est contenue dans ''s'', elle retourne "vrai".
La fonction ''HasPrefix(s, prefix)'' ... x(s, substr)'' recherche ''substr'' dans ''s'' et retourne la position de la première instance de sous-cha... u. Ce sont donc toutes des chaînes. ''Replace()'' retourne une nouvelle chaîne. Donc, la chaîne d'origine ... pas réellement modifiée, une nouvelle chaîne est retournée avec les remplacements souhaités.
Les fonctio
round, first_name.capitalize(), 70, 50)
# retournes plusieurs chaines sans couper au milieu des mo... , text, (255, 255, 255), font=font)
# On retourne la largeur et la hauteur
return(w, h)
... round, first_name.capitalize(), 70, 50)
# retournes plusieurs chaines sans couper au milieu des mo... , text, (255, 255, 255), font=font)
# On retourne la largeur et la hauteur
return(w, h)
fonctionnalité qui ne lève pas d’erreur, mais ne retourne pas ce que l’on souhaite pour autant. Ce bug po... e ci-dessus.
Si ''%%__check_and_set_value()%%'' retourne false (lignes 9), la méthode ''calculate()'' doit retourner le message "Invalid operation".
Déterminons le... r lesquelles ''%%__check_and_set_value()%%'' peut retourner false :
* Si l'opérateur est invalide ;
*
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
Nous pouvons également assigner des variables aux retours de méthodes, comme avec les fonctions :
<code p... méthode de calcul de l’aire (longueur x largeur) retournera le nombre 15, qui sera ensuite affiché via la... tness += 1
def __str__(self):
"""Retourne une forme lisible de l'objet."""
return... ll = False
def __str__(self):
"""Retourne une forme lisible de l'objet."""
wall_s