点语法与字符串键基本等价(t.name 等价 t["name"]),但边界处有差异:字段名是保留字(t.end、t.for)或纯数字(t.1)时点语法非法,必须字符串键;字段名带空格或特殊字符同样只能字符串键。学员混用时在保留字字段上踩坑。错误场景:
local cfg = {}
cfg.end = 1
end 是保留字,点语法直接语法错误,只能 cfg["end"]。
常规字段用点语法(简洁),保留字与特殊字符字段用字符串键(通用),动态字段名只能字符串键。规范写法。示例代码如下:
local cfg = {}
cfg["end"] = 1
cfg["max-hp"] = 500
local key = "dynamic_key"
cfg[key] = "动态字段"
print(cfg["end"], cfg["max-hp"], cfg[key])
三行分别覆盖保留字、特殊字符、动态键三种场景——字符串键是万能形态,点语法是常规字段的简写。示例代码如下:
local k = "name"
local player = {}
player[k] = "甲"
print(player.name)
player.name 与 player["name"] 读写互通,动态键写入后点语法可读。
三步验证:cfg.end 复现语法错误,cfg["end"] 正常读写;动态键写入后用固定字符串键读取验证互通;点语法读写与字符串键读写交叉验证一致性。
保留字字段的通用解法是加前缀避开:end_time、for_count——与其处处写字符串键,不如命名规范层面绕开保留字。示例代码如下:
cfg.end_time = 1
cfg.for_count = 2
加后缀后点语法合法,代码整体风格统一。
点语法的字段名不能以数字开头,t.1st 非法而 t["1st"] 合法——配置解析类代码常见此类字段。
全站技术干货持续更新:996 引擎 / Lua 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →
一、抛坑提问:封禁词 80 个,逐个替换要扫 80 遍正文,命中次数还全丢——一次遍历配合词表命中统计,命中几个词、各命中几…
一、一行代码拆解:if BAG = CAP then return false end —— 入包前先查空位的容量闸:格子满…
一、抛坑提问:掉落表 200 个物品权重排到眼花——先掷"掉不掉、掉哪个稀有度",再在该稀有度池里抽物品,两段判定让每张表都…
一、抛坑提问:两名队员 0.5 秒内先后命中才算"合击"触发额外伤害——命中时间戳各自独立,怎么判定够近?用后发命中时间减先…
一、线上事故:组队结算页开着时玩家掉线,内存里的待领奖数据直接蒸发,3 小时收到 170 条丢失反馈;登出钩子把未决数据统一…
一、抛坑提问:背包里 4 组"金创药×30"占 4 格,为什么不能叠成一格 120 瓶?按物品 id 归并计数,同 id 累…