• Subject: Re: Explain?
• From: Rici Lake <lua@...>
• Date: Thu, 28 Oct 2004 11:55:30 -0500

```
On 28-Oct-04, at 11:40 AM, George Warner wrote:

```
```Is this true?
```
```
Probably not.

```
``` Do "local" variables have a life beyond their scope?
```
```
No.

```
```Do they waste memory?
```
```
Possibly. Consider the following:

local a = {}
for i = 1, 1000000 do a[i] = "X" .. i end
local b = somefunction(a, x)
-- no more references to a

In that case, a will live until the end of the scope, which
might be some time distant.

It is better to create such locals within their own scope,
although that is a bit awkward in the above case; it looks
like this:

local b -- create b in surrounding scope
do
local a = {}
for i = 1, 1000000 do a[i] = "X" .. i end
-- use b from surrounding scope:
b = somefunction(a, x)
end

Of course, that's a dumb example.

For what it's worth, the following code is probably better:

-- useful helper function, makes maintenance easier
local function Set(s)
local t = {}
for w in string.gfind(s, "([%S]+)") do t[w] = true end
end

-- Who are the stooges?
local Stooges = Set[[ Larry Curly Moe ]]

-- ....