繁体   English   中英

将参数解析为Lua文件

[英]Parse Arguments to Lua File

我有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()'?

在此先感谢,此致

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

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

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

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

错误处理留给读者练习。

return a到data.lua的末尾,将其转换为模块,然后:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM