[Squeak-fr] Présentation, et petit soucis avec les dictionnaires
fbeudaert at altern.org
fbeudaert at altern.org
Jeu 5 Juil 17:14:45 UTC 2007
Bonjour,
Je viens de m'inscrire à cette liste, vu que je m'intéresse à Squeak
depuis un moment, mais ce n'est que récemment que j'arrive à trouver un
peu de temps pour enfin mettre les mains dedans.
Là je débute vraiment en Smalltalk, et il y a quelque-chose que je ne
comprend pas dans mon script (dans un Workspace) : En fait c'est pour
récupérer des infos d'un fichier .CSV dans un dictionnaire, et s'il y a
doublon de la clé, on additionne la nouvelle valeur à l'ancienne au lieu
de créer deux éléments.
A un moment j'utilise un asSymbol pour transformer une string du CSV pour
faire la clé. Seulement dans certain cas, 'toto' devient #'toto' au lieu
de #toto, et dans d'autres j'ai bien #toto... Là j'avoue que je ne
comprends pas pourquoi... Quelqu'un a-t-il une idée ?
Je ne sais pas si je me suis exprimé assez clairement, donc voici ci-après
le contenu de mon CSV de test, et le code dans le Workspace.
Cordialement,
Frédéric
---- test.csv ----
toto,12,a
machin,30,b
toto,3,c
---- workspace ----
| f ligne donneesLigne assoc cle valeur ancienneValeur |
assoc := Dictionary new.
Transcript clear.
f := FileStream oldFileNamed: 'test.csv'.
[(ligne := f nextLine) notNil] whileTrue: [
donneesLigne := ligne csvSubstrings.
cle := (donneesLigne at: 1) asSymbol. Transcript show: cle;cr.
Transcript show: donneesLigne;cr.
valeur := (donneesLigne at: 2) asInteger.
(assoc includesKey: cle)
ifFalse: [
assoc add: (cle->valeur)]
ifTrue: [
Transcript show: 'on ajoute';cr.
ancienneValeur := assoc at: cle.
assoc at: cle put: (ancienneValeur + valeur)]
].
f close.
Transcript show: assoc ; cr. assoc inspect.
Plus d'informations sur la liste de diffusion Squeak-fr