[Date Prev][Date Next][Thread Prev][Thread Next]
[Date Index]
[Thread Index]
- Subject: Re: Closures
- From: Edgar Toernig <froese@...>
- Date: Thu, 13 May 2004 04:49:32 +0200
Jack Christensen wrote:
>
> I'm getting some results I was not expecting with this code.
>
> functionList = {}
>
> for i=1, 10 do
> functionList[ i ] = function()
> print( i )
> end
> end
>
> for i=1, 10 do
> functionList[ i ]()
> end
>
> I get ten 10's printed out. As I understand closures I would have
> expected 1 to 10.
Why 1 to 10? You've created ten closures, right. But alll reference
the same i. What's the value of i at the time you call the closure?
You get your expected behaviour (freeze the value at closure creation
time) with this:
for i=1, 10 do
local i=i -- for each closure a private 'i'
functionList[ i ] = function()
print( i )
end
end
Ciao, ET.