lua-users home
lua-l archive

[Date Prev][Date Next][Thread Prev][Thread Next] [Date Index] [Thread Index]


On 2 August 2010 06:45, phlnc8 <phlnc8@gmail.com> wrote:
> On Sun, Aug 1, 2010 at 4:36 PM, Jim Whitehead II <jnwhiteh@gmail.com> wrote:
>
>> On 1 Aug 2010 20:31, "phlnc8" <phlnc8@gmail.com> wrote:
>>>> Probably something like this:
>>>>
>>>>  local _ENV={}
>>>>  function f1() ... end
>>>>  function f2() ... end
>>>>  ...
>>>>  return _ENV
>>>>
>>>
>>> In that case, globals (builtins) cannot be used within definitions!?!
>>> Did I miss something?
>>
>> If you want to use something from the outer environment, you can store it
>> and use it. This is precisely the same as using module() without
>> package.seeall in Lua 5.1.
>>
> Do you mean redefining as local all the builtins used in the module?
>
>  local table = table
>  local string = string
>  local print = print
>  . . .
>  . . .
>  local _ENV={}
>  . . .
>

I've always been in favour of localising the global functions you use;
but no, I believe they meant to use
local _ENV = setmetatable({},{__index=_G})
function foo()
end
return _ENV

Daurn.