lua:尝试索引值为nil的值(字段'?')
2021-2-12 16:46:51
收藏:0
阅读:144
评论:2
我在这个文件中得到了这个错误:
-从这里获取中间点圆形绘图算法:
- https://stackoverflow.com/questions/17163636/filled-circle-in-matrix2d-array
-代码从java翻译
--启动2d数组
matrix = {}
为i = 1,2 do
matrix [i] = {}
end
-给定矩阵和直径填充阵列
function mCircle(matrix,d)
local startX = d / 2
local startY = d / 2
local r = d / 2
mCircleRec(matrix,d,startX,startY,r,r)
-打印矩阵
为i = 1,d做
为j = 1,d做
print(matrix [x] [y])
end
end
结束
函数mCircleRec(matrix,d,startX,startY,x,y)
if(x>= d or y>= d or x < 0或y < 0或matrix [x] [y] == 1)
然后
返回
elseif(matrix [x] [y] == 9)
然后
返回
结束
为r= d / 2 local
如果(((x-startX)*(x-startX)+(y-startY)*(y-startY))<=(r*r))
然后
matrix [x] [y] = 1
其他
matrix [x] [y ] = 9
结束
mCircleRec(matrix,d,startX,startY,x + 1,y); -下
mCircleRec(matrix,d,startX,startY,x,y + 1); -右
mCircleRec(matrix,d,startX,startY,x-1,y); -上
mCircleRec(matrix,d, startX,startY,x,y-1); -左
mCircleRec(matrix,d,startX,startY,x-1,y-1),-对角线向上
mCircleRec(matrix,d,startX,startY,x + 1,y + 1); -对角线向下右
mCircleRec(matrix,d,startX,startY,x + 1,y-1); -对角线向下左
mCircleRec(matrix,d,startX,startY,x-1,y + 1); -对角线向上右
结束
mCircle(矩阵,20)
完整的错误消息:
lua:circle.lua:27:尝试索引值为nil的值(字段'?')
堆栈跟踪:
circle.lua:27:在函数'mCircleRec'中
circle.lua:16:在函数'mCircle'中
circle.lua:54:在主干中
[C]:在?
这是一个简单的填充圆算法,它创建一个2d数组并将其放置在一个填充的圆内,该代码从java翻译,并且原始代码位于此处的一个答案中 。
我是lua的新手,我看了每一个关于相同错误的问题,但没有一个是相关的。 先谢谢您的帮助
编辑:错别字
编辑: while时出现另一个错误: 我错误地创建了2d数组并对其进行了修改:
-启动2d数组
local半径= 20
local直径=半径* 2
-创建一个直径x直径的数组
矩阵= {}
对于我=1,直径做
matrix [i]= {}
for j = 1,直径做
matrix [i] [j] = 0 -在此处填充值
end
end
更改此项不会更改错误消息
点赞
用户14416269
原来问题是当我尝试打印数组时,我将x和y作为索引而不是i和j。
同时,一开始我用错误的方式定义了2D数组,像这样matrix = {{}},这是不起作用的。
2021-02-12 16:49:23
评论区的留言会收到邮件通知哦~
推荐文章
- 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 代码?

你提供的代码没有引起引用的错误消息。
首先你有这个
local start Y = d/2你已经修复了它
然后有一个错误的 if 语句
if (x >= d or y >= d or x < 0 or y < 0 or matrix[x][y] == 1) --错误似乎在这一行(27)之间 then matrix[x][y] = 1 then return elseif (matrix[x][y] == 0) then return end其中有两个
then只有在修复这些错误之后,你才能看到引用的错误。
在
mCircle内x和y是nil。因此matrix[x][y]是不可能的。