找回密码
 register

QQ登录

只需一步,快速开始

查看: 432|回复: 0

[游戏教程] LUA常见错误:将 nil 插入表中、忘记了闭合长字符串或长注释、混淆了 ipairs 和 pairs、在条件语句中使用 = 而不是 ==

[复制链接]

[游戏教程] LUA常见错误:将 nil 插入表中、忘记了闭合长字符串或长注释、混淆了 ipairs 和 pairs、在条件语句中使用 = 而不是 ==

[复制链接]
  • 打卡等级:热心大叔
  • 打卡总天数:94
  • 打卡月天数:17
  • 打卡总奖励:94
  • 最近打卡:2025-01-18 01:28:20
Waylee

主题

0

回帖

1万

积分

仙帝

积分
12364
Waylee 2023-6-14 09:29 | 显示全部楼层 |阅读模式

马上注册,查看网站隐藏内容!!

您需要 登录 才可以下载或查看,没有账号?register

×
错误14:将 nil 插入表中
Lua 中的表是非常灵活的,它们可以包含任何类型的值。但是,有一种情况你可能会遇到错误,那就是当你尝试将 nil 插入表中时。
local t = {}
table.insert(t, nil) -- 错误!不能插入 nil

如果你需要在表中留下一个空位,可以考虑插入一个特定的值,比如 false 或者一个字符串 "empty"。

错误15:忘记了闭合长字符串或长注释
在Lua中,你可以用 [[ 和 ]] 来创建长字符串或长注释。然而,如果你忘记了闭合它们,那就会出问题。
local str = [[Hello, World! -- 错误!没有闭合的长字符串


错误16:在循环中修改表
在 Lua 中,当你在遍历表时尝试修改该表,可能会导致无法预知的结果。虽然这种情况下 Lua 不会抛出错误,但它可能会导致程序行为异常。
local t = {1, 2, 3, 4, 5}

for i, v in ipairs(t) do
    if v == 3 then
        table.remove(t, i)
    end
end
-- 你可能会期望 t 现在是 {1, 2, 4, 5},但实际上它是 {1, 2, 4, 5, 5}

避免这个问题的一个方式是创建一个新的表来存储需要的元素,而不是在遍历过程中修改表。

错误17:混淆了 ipairs 和 pairs
在 Lua 中,ipairs 和 pairs 是用于遍历表的两个不同函数。ipairs 用于遍历数字索引,并且会在遇到第一个 nil 值时停止。而 pairs 则可以遍历表中所有的键值对。
如果你想要遍历一个包含 nil 值的表,或者遍历一个非数字索引的表,你应该使用 pairs。否则,你可能会错过一些你期望遍历到的值。
local t = {1, 2, nil, 4, 5}
for i, v in ipairs(t) do
    print(v)
end
-- 这将只打印出 1 和 2

for k, v in pairs(t) do
    print(v)
end
-- 这将打印出 1, 2, 4 和 5


错误18:在条件语句中使用 = 而不是 ==
这是一个非常常见的错误,不只是在 Lua 中,在许多其他语言中也是如此。在 Lua 中,= 是赋值操作符,而 == 是比较操作符。在条件语句中混淆这两个操作符会导致语法错误。
local a = 1

if a = 1 then  -- 错误!在条件语句中使用了赋值操作符
    print("a is 1")
end

你应该使用 == 来进行比较。
if a == 1 then  -- 正确
    print("a is 1")
end


您需要登录后才可以回帖 登录 | register

本版积分规则

雪舞知识库 | 浙ICP备15015590号-1 | 萌ICP备20232229号|浙公网安备33048102000118号 |天天打卡

GMT+8, 2025-1-20 04:46 , Processed in 0.097264 second(s), 8 queries , Redis On.

Powered by XueWu Licensed

Copyright © Tencent Cloud.

快速回复 返回顶部 返回列表