[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