lua-users home
lua-l archive

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


> 
> On Oct 19, 2011, at 5:32 PM, Roberto Ierusalimschy wrote:
> 
> > If you really want 'module', wouldn't be simpler to use
> > 
> > _ENV = module(...)
> > 
> > with a simplified version of 'module'?
> 
> By simplified, do you mean a 5.2 version not doing any of the setfenv() mambo jambo of the 5.1 implementation, but otherwise equivalent in functionality?
> 
> With the environment switching as an explicit _ENV assignment?

For instance (also without the global setting). Something like this:

function module (name, ...)
  local env = package.loaded[name]
  if env == nil then
    env = {}
    package.loaded[name] = env
  end
  env.NAME = name
  env.M = env
  for _, f in ipairs{...} do
    f(env)
  end
  return env
end

-- Roberto