【发布时间】:2014-03-12 18:59:00
【问题描述】:
我在 Lua 中为 Conky 编写了一个函数,以提供在刷新前延迟 3 个部分(间隔)显示的顶级进程列表。这需要在下次刷新之前的每个后续时间间隔捕获要存储和显示的刷新数据。
下面的代码一切正常,但我很困惑我无法在conky_top_control() 的功能块中定义全局表t1、t2、t3 和t4。我不得不在块外创建它们,但为了美观,我想将表创建保留在功能代码块内。我已经尝试在表格前面没有“本地”定义的情况下列出它们。我也找不到正确的语法来使用环境声明 _G 来创建表,如果这甚至是正确的用法。
所以,问题是:如何将函数内的表定义为全局表?特别是与下面定义的表t1、t2、t3 和t4 相关?
这是Lua中的代码,从Conky ${lua top_control)中调用:
function conky_timer(interval)
return tonumber(conky_parse("${updates}") % interval+1)
end
t1,t2,t3,t4={},{},{},{}
function conky_top_control()
if conky_timer(3)==1 then
for i=1,5 do
t1[i]=conky_parse('${top name '..i..'}')
t2[i]=conky_parse('${top pid '..i..'}')
t3[i]=conky_parse('${top cpu '..i..'}')
t4[i]=conky_parse('${top mem '..i..'}')
end
end
return conky_parse(t1[1]..'${goto 129}'..t2[1]..'${goto 174}'..t3[1]..'${goto 219}'..t4[1]..'\n'..t1[2]..'${goto 129}'..t2[2]..'${goto 174}'..t3[2]..'${goto 219}'..t4[2]..'\n'..t1[3]..'${goto 129}'..t2[3]..'${goto 174}'..t3[3]..'${goto 219}'..t4[3]..'\n'..t1[4]..'${goto 129}'..t2[4]..'${goto 174}'..t3[4]..'${goto 219}'..t4[4]..'\n'..t1[5]..'${goto 129}'..t2[5]..'${goto 174}'..t3[5]..'${goto 219}'..t4[5])
end
【问题讨论】:
-
所有 Lua 代码都被编译为一个函数,因此所有全局变量都设置在“函数内”......这只是为了让您知道您是否遇到了错误的问题你的问题。
标签: lua