[Date Prev][Date Next][Thread Prev][Thread Next]
[Date Index]
[Thread Index]
- Subject: Re: [ANN] stdlib release 16 released
- From: Dirk Laurie <dpl@...>
- Date: Fri, 10 Dec 2010 08:41:12 +0200
On Fri, Dec 10, 2010 at 03:41:14AM +0200, David Manura wrote:
> If you like, I suggest this:
>
> -- math_ext.lua
> local M = {}
> for k,v in pairs(math) do M[k] = v end
> function M.floor(n, p) ..... end
> return M
>
> -- test.lua
> local math = require "math_ext"
> print(math.floor(math.pi, 2))
>
This problem is not confined to math_ext.lua, so why not a more
general solution: define functions M.foo etc inside
local M ... return M
but don't otherwise populate M yet.
-- myutils.lua
function import(from,to,items)
-- import(from,to) copies everything; can be used as shallow table copy
-- import(from) copies to current environment
-- import("name") copies from require"name"
to = to or _ENV or getfenv() -- specified or Lua 5.2 or Lua 5.1
if type(from)=='string' then from=require(from) end
if items
then for i=1,#items do to[items[i]] = from[items[i]] end
else for k,v in pairs(from) do to[k]=v end
end
return to
end
-- test.lua
require"myutils" -- I do this habitually anyway
import("math_ext",math)
Dirk