Collections

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|

Collections

Frédéric Ferrère-2
Bonjour,

je rencontre un petit problème de compréhension (de débutant c'est sur).


Voila un morceau de code :

| myImage pixelsValues |
        myImage := ImageMorph new.
        pixelsValues := myImage imageForm tallyPixelValues.
        Transcript show: pixelsValues size; cr.
        (pixelsValues select: [ :each | each > 0]) do: [ :each | Transcript show: each; show: ' '.].
        (pixelsValues collect: [ :each | each > 0]) do: [ :each | Transcript show: each; show: ' '.].


pixelsValues renvoie un bitmap (qui est une Collection)

pourquoi collect: sur le bitmap me renvoie une erreur ?

Error : improper store into indexable object

select par contre fonctionne 'normalement'

Merci d'éclairer ma lanterne de débutant (mais je m'accroche :) )

Cordialement,
--

Frédéric Ferrère
_______________________________________________
Squeak-fr mailing list
[hidden email]
http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/squeak-fr
Reply | Threaded
Open this post in threaded view
|

Re: Collections

Yann Monclair-2
Bonjour,

le select et le collect fonctionne differemment.

pixelsValues select: [ :each | each > 0]

retourne les éléments de pixelsValues pour lesquels each>0 s'évalue à true.

pixelsValues collect: [ :each | each > 0]

renvoie la collection des resultats des évalutions each>0 , donc une
collection de booléens.

voila pour la différence entre collect et select. si je ne me trompe pas
(j'ai passe la journee dans eclipse, je suis apte a dire des betises
tres grosses!!)

Mais je ne pourrais pas expliquer le bug , jen 'ai pas squeak sous la
main pour tester.

HTH,

Yann


FERRERE Frédéric a écrit :

> Bonjour,
>
> je rencontre un petit problème de compréhension (de débutant c'est sur).
>
>
> Voila un morceau de code :
>
> | myImage pixelsValues |
>     myImage := ImageMorph new.
>     pixelsValues := myImage imageForm tallyPixelValues.
>     Transcript     show: pixelsValues size; cr.
>     (pixelsValues select: [ :each | each > 0]) do: [ :each |
> Transcript show: each; show: ' '.].
>     (pixelsValues collect: [ :each | each > 0]) do: [ :each |
> Transcript show: each; show: ' '.].
>
>
> pixelsValues renvoie un bitmap (qui est une Collection)
>
> pourquoi collect: sur le bitmap me renvoie une erreur ?
>
> Error : improper store into indexable object
>
> select par contre fonctionne 'normalement'
>
> Merci d'éclairer ma lanterne de débutant (mais je m'accroche :) )
>
> Cordialement,


--
Yann Monclair -- Email: [hidden email]
2, rue Camille Claudel -- Phone: +33 298 979323
29900 Concarneau -- Cell : +33 663 948092
FRANCE -- WWW  : http://yann.monclair.info

_______________________________________________
Squeak-fr mailing list
[hidden email]
http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/squeak-fr
Reply | Threaded
Open this post in threaded view
|

Re: Collections

[ Luc Fabresse ]
Bonjour,

  A mon avis le "bug" vient du fait que la méthode collect: créer une
nouvelle collection du même type que le receveur courant (ici un Bitmap)
  afin de stocker les valeurs obtenues en évaluant le block.

Donc,

pixelsValues collect: [ :each | each > 0]

essaie de construire un bitmap en lui insérant des booléens ce qui ne
fonctionne pas.

Par contre:

pixelsValues collect: [ :each | each * 2]

fonctionne.

Luc.

Yann Monclair a écrit :

> Bonjour,
>
> le select et le collect fonctionne differemment.
>
> pixelsValues select: [ :each | each > 0]
>
> retourne les éléments de pixelsValues pour lesquels each>0 s'évalue à true.
>
> pixelsValues collect: [ :each | each > 0]
>
> renvoie la collection des resultats des évalutions each>0 , donc une
> collection de booléens.
>
> voila pour la différence entre collect et select. si je ne me trompe pas
> (j'ai passe la journee dans eclipse, je suis apte a dire des betises
> tres grosses!!)
>
> Mais je ne pourrais pas expliquer le bug , jen 'ai pas squeak sous la
> main pour tester.
>
> HTH,
>
> Yann
>
>
> FERRERE Frédéric a écrit :
>> Bonjour,
>>
>> je rencontre un petit problème de compréhension (de débutant c'est sur).
>>
>>
>> Voila un morceau de code :
>>
>> | myImage pixelsValues |
>>     myImage := ImageMorph new.
>>     pixelsValues := myImage imageForm tallyPixelValues.
>>     Transcript     show: pixelsValues size; cr.
>>     (pixelsValues select: [ :each | each > 0]) do: [ :each |
>> Transcript show: each; show: ' '.].
>>     (pixelsValues collect: [ :each | each > 0]) do: [ :each |
>> Transcript show: each; show: ' '.].
>>
>>
>> pixelsValues renvoie un bitmap (qui est une Collection)
>>
>> pourquoi collect: sur le bitmap me renvoie une erreur ?
>>
>> Error : improper store into indexable object
>>
>> select par contre fonctionne 'normalement'
>>
>> Merci d'éclairer ma lanterne de débutant (mais je m'accroche :) )
>>
>> Cordialement,
>
>
_______________________________________________
Squeak-fr mailing list
[hidden email]
http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/squeak-fr