如何将 Lua 模块中的所有符号导入到全局命名空间?

在 Python 中,我们可以键入from math import *一次性导入所有数学函数。

那么,在 Lua 中该怎么做呢?我希望导入来自mathlove.graphicslove.audio等的所有符号,以方便编写小型实验程序。

我知道这是不受欢迎的。

点赞
用户218294
用户218294

在写问题的过程中,我想出了一种从模块中导入所有符号的方法:

function use(module, ...)
    for k,v in pairs(module) do
        if _G[k] then
            io.stderr:write("use: skipping duplicate symbol ", k, "\n")
        else
            _G[k] = module[k]
        end
    end
end

使用示例:

require "use"
use(math)
use(love.graphics)

print(sin(pi/6))

function love.draw()
    setColor(1, 0, 0)
    circle("fill", 300, 300, 100)
end
2020-07-16 10:44:08