Lua中的函数、表和for循环
2013-9-26 19:47:54
收藏:0
阅读:144
评论:2
现在我在做一些测试,但我似乎找不到这段代码的问题在哪里-有任何想法吗?
function IATetris(Pieza,Rotacion,Array)
io.write("The table the script received has: ",Pieza,"\n")
RotacionInicial = Rotacion
PosInicial = 7
final = #Array——这可以获取数组的大小
i = 1
for y = 1, 20 do——我的俄罗斯方块板的数组在x为20,y为14,所以它会像这样Array2D[20][14]
io.write(" First for y ",y,"\n")
Array2D[y]={}——清除新数组
for x = 1,14 do
io.write(" First for x ",x,"\n")
if i == final then break end
io.write(" First for i",i,"\n")
Array2D[y][x] = Array[i]
i= i+1——看起来你不能在lua中使用i ++
end
end
end
我正在获取2个整数和1个数组。我必须在控制台中写入以检查程序实际上走到了哪里,我得到的是......
第一条日志消息:“脚本接收到的表格是:”
第二条日志消息:“首先为y”
但我没有比这更进一步,所以程序可能在那里崩溃?这个函数每20秒左右被调用一次。我真的不知道为什么会发生这种情况。任何帮助将不胜感激,谢谢。
原文链接 https://stackoverflow.com/questions/10422635
点赞
stackoverflow用户501459
看起来 Array2D
没有初始化(或者不是一个表格),所以它会出错在 Array2D[y]={}
这一行。
您可以使用 pcall
调用一个函数并捕获错误,像这样:
local ok, msg = pcall(IATetris, pieza, rotacion, array)
if not ok then
print("ERROR:", msg)
end
顺带一提:您应该尽可能使用 local
关键字来限制您的变量范围。
2012-05-02 23:08:20
评论区的留言会收到邮件通知哦~
推荐文章
- 如何在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 代码?
- addEventListener 返回 nil Lua
- Lua中获取用户配置主目录的跨平台方法
- 如何编写 Lua 模式将字符串(嵌套数组)转换为真正的数组?
如果这行代码被记录:
io.write(" First for y ",y,"\n")
而这行代码没有被记录:
io.write(" First for x ",x,"\n")
那么问题出在这两行其中的一行:
Array2D[y]={} --清除新数组 for x = 1,14 do
for x...
对于我来说绝对有效,所以我建议问题出在 Array2D 行。这行代码语法上没有问题,因此它必须是一种运行时错误。运行时错误应该由 Lua 或嵌入的应用程序报告。如果它们没有,而函数只是“停止”,那么你就是在盲目调试,你会浪费很多时间在这样的问题上。我能想到的唯一的错误可能会在那一行上发生,就是如果
Array2D
不是一个表。由于你正在尝试对其进行索引,因此它需要是一个表。在函数中没有声明Array2D
,如果它是已经在其他地方定义的全局变量,那么这很好。但是,如果它是这个函数中仅用于本地变量,则应该将local Array2D = {}
添加到其中。不知道
Array2D
是什么,或者实际上你的错误是什么,很难给出更准确的答案。如果你真的没有更好的方法来找出问题,那么在 Array2D 行之前加上这个就可以测试我的假设:io.write("Array2D is: ", type(Array2D), "\n")