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

Lua嵌套Table遍历:如何获取指定属性ammo的值?

解决Lua中只获取子表指定属性的问题

嘿,作为Lua新手碰到这种表遍历的问题太正常啦,我来帮你快速搞定!

你原来的循环之所以会打印整个table,是因为你把每个子table当成了数组结构(用v[1]、v[2]这种数字索引去取值),但实际上你的gun_info里每个子元素都是带命名键的表(比如rate、ammo这些是键名),所以得通过键名来访问对应的属性值。

修改后的代码示例

直接在循环里通过键名ammo来获取对应的值就好:

local gun_info = { 
    g_sword={rate=0.5;spd=0;dmg=1;ammo=1;}; 
    g_pistol={rate=0.5;spd=5;dmg=1;ammo=40;}; 
    g_knife={rate=0.8;spd=5;dmg=1;ammo=1;}; 
    g_shuriken={rate=0.3;spd=5;dmg=1;ammo=40;}; 
    g_bomb={rate=0.8;spd=5;dmg=1;ammo=20;}; 
};

-- 只获取并输出每个子表的ammo值
for gun_name, gun_stats in pairs(gun_info) do
    -- 两种写法都可以:gun_stats.ammo 或者 gun_stats["ammo"]
    print(gun_name, gun_stats.ammo)
end

运行这段代码后,你会看到输出类似:

g_sword    1
g_pistol   40
g_knife    1
g_shuriken 40
g_bomb     20

额外小技巧:收集所有ammo到新表

如果之后需要单独使用这些ammo值,还可以把它们收集到一个新的表中:

local ammo_collection = {}
for gun_name, gun_stats in pairs(gun_info) do
    ammo_collection[gun_name] = gun_stats.ammo
end

-- 遍历新表查看结果
for name, ammo in pairs(ammo_collection) do
    print(name, ammo)
end

这样你就可以随时通过ammo_collection.g_sword或者ammo_collection["g_pistol"]来快速获取对应武器的弹药数啦~

内容的提问来源于stack exchange,提问作者javaprogrammer

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 06:22:41