You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Lua循环填充表后打印仅输出nil问题排查

问题分析与修复方案

你的代码问题出在循环打印时没有正确引用子表中的字段,导致输出全是nil。

具体原因

在for k, v in pairs(interfaces)循环中,v代表interfaces里的每一个网卡配置子表(比如{ device = "eth1", address = "192.168.1.1" })。但你直接写print(device, address)时,Lua会把device和address当成未定义的全局变量——而未赋值的全局变量默认值就是nil,所以才会输出一串nil。

修复后的代码

只需要把打印语句改成引用v中的字段即可:

-- Define ten network interfaces
interfaces = {} -- Define an empty table
for n = 1, 10 do
    interfaces[n] = { device = "eth"..n, address = "192.168.1."..n }
end
for k, v in pairs(interfaces) do
    -- 这里要通过v访问子表的device和address字段
    print(v.device, v.address)
end

额外小建议

因为你的interfaces是连续整数索引的数组(从1到10),使用ipairs遍历会比pairs更贴合语义(ipairs专门遍历连续整数键的数组,pairs会遍历所有类型的键),修改后的循环可以写成:

for k, v in ipairs(interfaces) do
    print(v.device, v.address)
end

这样运行结果和之前一样,但代码的可读性和语义准确性更好。

内容的提问来源于stack exchange,提问作者Geraldo Luiz Cartolano

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 06:37:39