logo       

problems with scoping: msg#00128

lang.smalltalk.squeak.beginners

Subject: problems with scoping

Hi,
I face a problem with variable scoping in block-closures:

arr := Array withAll: #(1 2 3 4 5 ).
blocks := arr collect: [ :i | [Transcript show: i] ].
blocks do:[:item | item value].

This prints 55555 because blocks contains
[Transcript show: i]
for all of its elements and accesses the current value of i.

I would like to have blocks contain
[Transcript show: 1]
[Transcript show: 2]
[Transcript show: 3]
etc.

so it would print 12345

TIA Christoph


<Prev in Thread] Current Thread [Next in Thread>
Google Custom Search

News | FAQ | advertise