[Date Prev][Date Next][Thread Prev][Thread Next]
[Date Index]
[Thread Index]
- Subject: Re: one more little thing about upvalues
- From: "Peter Shook" <pshook@...>
- Date: Wed, 04 Jun 2003 13:13:38 -0400
jason zhang wrote:
I am one of those who don't know upvalues and closure:-)
However, I'd like to find a tutorial about that. The manual
seems to be not clear on that. Thanks for any help.
Rici uses closures a lot so look for his stuff in the list archive.
there is stuff on the wiki: http://lua-users.org/wiki/MinimisingClosures
Any good book on Perl should will talk about closures.
http://www.perl.com/pub/a/2002/05/29/closure.html
And here is a simple example.
$ cat closure.lua
-- To quote Damian Conway:
-- A closure is just a function that refers to one or more lexical
-- variables declared outside the function itself.
do
local name = 'bob'
function print_name()
print('name', name)
end
end
-- cannot access name directly from here on, but print_name can
print_name()
-- Here is a simple example:
function make_counter(count)
local function counter()
local c = count
count = count + 1
return c
end
return counter
end
counter1 = make_counter(10)
counter2 = make_counter(100)
print( 'c1', counter1(), 'c2', counter2() )
print( 'c2', counter2() )
print( 'c2', counter2() )
print( 'c1', counter1() )
print( 'c1', counter1(), 'c2', counter2() )
$ lua closure.lua
name bob
c1 10 c2 100
c2 101
c2 102
c1 11
c1 12 c2 103
- Peter Shook
_________________________________________________________________
Tired of spam? Get advanced junk mail protection with MSN 8.
http://join.msn.com/?page=features/junkmail