我有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()'吗?
预先感谢, 问候
答案 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