[squeak-dev] A weird thing about Arrays
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.
More information about the Squeak-dev