Re: [Squeak-fr] Egalité de chaîne

stéphane ducasse ducasse at iam.unibe.ch
Ven 3 Sep 17:31:38 CEST 2004


je pense que c'est un bug du livre car Squeak est different de VW.

en visualWorks on a

'aa' == 'aa' false
|toto|
toto := 'jlkj'.
toto == toto. "true"
toto == 'jlkj' false

Dans Squeak, le compileur doit mettre la chaine dasn le literal frame 
de la methode et n'en alloue pas une seconde.
alors qu'en VW deux strings sont allouees. Maintenant il faut que tu 
fais rarement

'aa' == 'aa'
mais plutot
tu passes par arguments de methodes donc tu es plus dans la situation 
normale.

Stef



> Chapitre 5 -> Notations littérales pour la définition de données -> 
> Caractères et chaînes de caractères (page 88)
>
> "'Je ne suis pas unique' == 'Je ne suis pas unique' rend false."
>
> Or, le test depuis Squeak rend true. Alors que si on stocke d'abord la 
> chaîne dans une variable puis qu'on teste l'égalité avec une constante 
> chaîne, ça renvoie false :
>
> 'je ne suis pas unique'=='je ne suis pas unique'. true
> toto := 'je ne suis pas unique'.
> toto == 'je ne suis pas unique'. false
> Je pense que le deuxième résultat est tout à fait logique. On 
> construit d'abord l'objet toto, puis un objet chaîne de caractère et 
> on teste les deux pointeurs. Il est normal qu'ils soient différents.
>
> Par contre, le résultat du premier test qui renvoie true me paraît un 
> peu bizarre. J'aurai pensé que Squeak créait 2 chaînes de caractères 
> différentes (avec le même contenu mais à 2 emplacements distincts) et 
> donc que le test de pointeur devrait retourner false. Or, 
> contrairement à ce que dit le livre, ce test renvoie true.
>
> Est-ce que quelqu'un peut m'expliquer ? Est-ce un bug de Squeak ou du 
> livre ?
>
>
> Damien
> _______________________________________________
> Squeak-fr mailing list
> Squeak-fr at lists.squeakfoundation.org
> http://lists.squeakfoundation.org/listinfo/squeak-fr
>



Plus d'informations sur la liste de diffusion Squeak-fr