lua 错误:尝试调用一个空值(字段 'getn')
2017-12-17 0:47:57
收藏:0
阅读:67
评论:1
以下是我使用 cairo 的 lua 代码片段
cairo_set_source_rgba(cr, COLOR_FONT_R, COLOR_FONT_G, COLOR_FONT_B, 1)
cairo_set_font_size(cr, 0.011 * WINDOW_HEIGHT)
local ps_str = conky_parse("${exec ps -Ao comm,pcpu,%mem --sort=-pcpu | head -n 15}")
local processes = {}
for line in string.gmatch(ps_str, '([^\n]+)') do
table.insert(processes, line)
end
for line = 1,table.getn(processes) do
cairo_move_to(cr, 0.213 * WINDOW_WIDTH, 0.443 * WINDOW_HEIGHT + line * 0.014 * WINDOW_HEIGHT)
cairo_show_text(cr, processes[line])
end
cairo_stroke(cr)
但是,当我通过 conky 运行它时,我得到了以下错误(这是在离结束线五行的位置)。
我得到了错误:尝试调用一个空值(字段 'getn')
我尝试了一些在这里建议的东西,但我不确定如何修复它,所以想知道是否有一个简单的修复方法。
评论中的建议解决方案对上面的问题效果很好,但对以下问题无效:
function conky_geo_dotspiral(cx_str, cy_str, ...)
local cx = conky_to_num(cx_str)
local cy = conky_to_num(cy_str)
local arms = math.ceil(24 / table.getn(arg)) * table.getn(arg)
local rows = 10
local radius0, radius1 = 50, 140
local dotradius = 4
for i,v_str in ipairs(arg) do
v = conky_to_num(conky_parse(v_str))
for j = i-1, arms - 1, table.getn(arg) do
local p = j / arms
for k = 0, v / rows do
local dx = cx + (radius0 + (radius1-radius0) * k/rows) * math.cos(p * 2*math.pi + k * math.pi/arms)
local dy = cy + (radius0 + (radius1-radius0) * k/rows) * math.sin(p * 2*math.pi + k * math.pi/arms)
cairo_arc (cr, dx, dy, dotradius, 0, 2 * math.pi)
cairo_fill(cr)
end
end
end
end
我得到了错误:
尝试调用一个空值(字段 'getn')
我尝试用 #arg 替换 table.getn (arg),但仍然出现错误。
conky:llua_do_call:函数 conky_geo_dotspiral 执行失败:conky_geometry.lua:155:尝试获取一个空值的长度(全局 'arg')
点赞
评论区的留言会收到邮件通知哦~
推荐文章
- Lua 虚拟机加密load(string.dump(function)) 后执行失败问题如何解决
- 我想创建一个 Nginx 规则,禁止访问
- 如何将两个不同的lua文件合成一个 东西有点长 大佬请耐心看完 我是小白研究几天了都没搞定
- 如何在roblox studio中1:1导入真实世界的地形?
- 求解,lua_resume的第二次调用继续执行协程问题。
- 【上海普陀区】内向猫网络招募【Skynet游戏框架Lua后端程序员】
- SF爱好求教:如何用lua实现游戏内调用数据库函数实现账号密码注册?
- Lua实现网站后台开发
- LUA错误显式返回,社区常见的规约是怎么样的
- lua5.3下载库失败
- 请问如何实现文本框内容和某个网页搜索框内容连接,并把网页输出来的结果反馈到另外一个文本框上
- lua lanes多线程使用
- 一个kv数据库
- openresty 有没有比较轻量的 docker 镜像
- 想问一下,有大佬用过luacurl吗
- 在Lua执行过程中使用Load函数出现问题
- 为什么 neovim 里没有显示一些特殊字符?
- Lua比较两个表的值(不考虑键的顺序)
- 有个lua简单的项目,外包,有意者加微信 liuheng600456详谈,最好在成都
- 如何在 Visual Studio 2022 中运行 Lua 代码?

下面是修正过的代码片段:
cairo_set_source_rgba(cr, COLOR_FONT_R, COLOR_FONT_G, COLOR_FONT_B, 1) cairo_set_font_size(cr, 0.011 * WINDOW_HEIGHT) local ps_str = conky_parse("${exec ps -Ao comm,pcpu,%mem --sort=-pcpu | head -n 15}") local processes = {} for line in string.gmatch(ps_str, '([^\n]+)') do table.insert(processes, line) end for line = 1,#processes do cairo_move_to(cr, 0.213 * WINDOW_WIDTH, 0.443 * WINDOW_HEIGHT + line * 0.014 * WINDOW_HEIGHT) cairo_show_text(cr, processes[line]) end cairo_stroke(cr)而修正后的第二个问题的代码片段如下:
function conky_geo_dotspiral(cx_str, cy_str, ...) local cx = conky_to_num(cx_str) local cy = conky_to_num(cy_str) local arms = math.ceil(24 / #arg) * #arg local rows = 10 local radius0, radius1 = 50, 140 local dotradius = 4 for i,v_str in ipairs(arg) do v = conky_to_num(conky_parse(v_str)) for j = i-1, arms - 1, #arg do local p = j / arms for k = 0, v / rows do local dx = cx + (radius0 + (radius1-radius0) * k/rows) * math.cos(p * 2*math.pi + k * math.pi/arms) local dy = cy + (radius0 + (radius1-radius0) * k/rows) * math.sin(p * 2*math.pi + k * math.pi/arms) cairo_arc (cr, dx, dy, dotradius, 0, 2 * math.pi) cairo_fill(cr) end end end return '' end感谢对这段代码进行修正的所有建议。