将 lua 字符串作为 lua 代码执行

execute lua string as lua code

我想与同事共享 lua 个模块。为了获得最新版本的共享模块,我想用网络服务器存储和获取它们。

我的问题是:

是否可以直接从 http 请求或字符串加载 lua 代码?

我想实现这样的目标:

module = [[
    local sharedModule = {}
    function sharedModule.greet(name) print("hello " .. name) end  
    return sharedModule
]]
greeter = require (module)
greeter.greet("john")

也许这不是正确的做法。有比这个更好的方法吗?

Lua 中的编程中有 a whole section 专门用于此。 loadstring.

将直接满足您的需求

不过,我会仔细验证您实际执行的代码。至少,对其进行版本化(运行 如果代码 运行 取决于处于特定状态的环境,则错误的版本很可能会导致各种问题)。优化校验和并签署代码,并在执行任何操作之前验证签名。如果您的环境没有受到保护,这实际上是一个巨大的后门。

您还可以使用 rings 库来隔离您正在 运行 宁 Lua 环境本身中的代码。它在安全方面可能不是无懈可击的,但至少应该防止收到的代码使您的应用程序崩溃 if/when 它出错了。