[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