[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.


> Cheers
> Richo

More information about the Squeak-dev mailing list