|
RE: problems with scoping: msg#00130lang.smalltalk.squeak.beginners
> 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 Try this instead. arr := Array withAll: #(1 2 3 4 5 ). blocks := arr collect: [ :i | [Transcript show: i] fixTemps ]. blocks do:[:item | item value]. Squeak doesn't have true block closures, fixTemps is the standard way around this. Ramon Leon http://onsmalltalk.com
|
|
| <Prev in Thread] | Current Thread | [Next in Thread> |
|---|---|---|
| Previous by Date: | Underscore in 3.9, Ramiro Diaz Trepat |
|---|---|
| Next by Date: | Re: problems with scoping, Mathieu |
| Previous by Thread: | problems with scoping, Ch Lamprecht |
| Next by Thread: | Re: problems with scoping, Mathieu |
| Indexes: | [Date] [Thread] [Top] [All Lists] |
| News | FAQ | advertise |