[squeak-dev] A weird thing about Arrays

Levente Uzonyi leves at elte.hu
Fri Mar 12 21:45:52 UTC 2010


On Fri, 12 Mar 2010, Ricardo Moran wrote:

> Hi, guys
>
> I'm sorry if what I'm about to ask is a newbie question but I'm puzzled
> about a behavior I found today regarding Arrays.
>
> a1 := #(0 0 0 0).
> a2 := #(0 0 0 0).
> a1 == a2
>
> If I select the whole expression above and execute it on a workspace it
> returns true (meaning that a1 and a2 are the same object). If I execute each
> line separately it returns false.
> I don't understand why this happens. Is this expected? or is it a bug?
>
> This only happens when I use the literal syntax, using Array >>
> #new:withAll: works fine regardless of the way I execute it. I'm inclined to
> think this is a bug, but I wanted to know what you think about it.

It's an optimization by the compiler. If the same literal object appears 
twice or more, only one object will be created.


Levente

>
> Cheers
> Richo
>



More information about the Squeak-dev mailing list