解析参数到Lua文件

时间:2019-04-17 21:35:20

标签: lua

我有File:data.lua

#! /usr/bin/env lua
local a = {
    b = {
        c = {
            version = "z.y"
        },
        d = {
            version = "z.w"

        },
        getcversion = function ( self )
            print( self.c.version )
        end
    }
}

现在我需要'getcversion()'函数。

a.b:getcversion()

问题是,我需要从外面调用它:

data.lua "a.b:getcversion()"

我尽力了,但是我解决不了。

有人知道我怎么称呼'getcversion()'吗?

预先感谢, 问候

2 个答案:

答案 0 :(得分:0)

您需要在脚本中添加以下内容:

load(arg[1], "<string>", "t", {a = a})()

load将加载传递的参数(arg[1])的内容,并返回将在特定环境(以{a = a}表形式提供)中执行该代码的函数。需要将局部变量的值传递给您的代码(Lua 5.2 +)。

请记住,这将允许调用者将任意Lua代码传递给您的脚本,这可能是安全问题。

错误处理留给读者练习。

答案 1 :(得分:0)

在data.lua的末尾添加return a,将其变成一个模块,然后:

$ lua -e 'a = require("data"); print(a.b:getcversion())'
z.y