[Squeak-fr] Problèmes d'espaces dans la traduction fr de squeak
nicolas cellier
ncellier at ifrance.com
Dim 30 Avr 23:44:27 UTC 2006
Le Lundi 01 Mai 2006 00:49, Pascal Grossé a écrit :
> Je ne pense pas que le code soit très "smalltalkien", mais c'est
> probablement mon premier programme de plus de 3 lignes dans ce langage,
> alors soyez indulgents.
Je ne vois rien à redire, tu maitrises déjà bien les blocs de code à plusieurs
arguments et les collections !
> Petite question en passant: je n'ai pas réussi à
> savoir s'il était raisonnable de modifier les valeurs d'un dictionnaire
> tout en le parcourant. Dans le doute, j'ai préféré m'abstenir.
>
> Pascal
Tout à fait, cela est sûr tant que l'on ne modifie pas les clés du
dictionnaire (ni ajout, ni retrait ni changement).
Pourquoi ? Les dictionnaires sont stockés comme une collection d'objets (clé
-> valeurs) appelées Association. Quand on change la valeur, le même objet
Association est conservé. Et l'ordre des entrées du dictionnaire aussi.
Voir aussi aDictionary associationsDo: [:assoc | assoc value: (...)].
Cette boucle est bien moins jolie que keysAndValuesDo: mais plus efficace
(évite un accès at:put:).
Note qu'il y a des trous (nil) dans le Dictionary, de sorte que l'algorithme
d'accès rapide par hash code soit efficace (cf implementors de hash et
Dictionary>>findKeyOrNil:).
Le hash code de l'association qui permet de calculer l'indice où retrouver une
clé est bien entendu calculé uniquement à partir de la clé.
C'est pourquoi il ne faut surtout pas modifier la clé par
aDictionary associationsDo: [:assoc | assoc key: (...)]
sinon tu ne retrouveras plus tes petits (clé rangée au mauvais endroit)
Nicolas
More information about the Squeak-fr
mailing list