在lua中使用循环更改表值

Posted

技术标签:

【中文标题】在lua中使用循环更改表值【英文标题】:Change a table value with a loop in lua 【发布时间】:2022-01-21 16:20:15 【问题描述】:

我正在尝试更改表格中的值,但我不能。

这是我的代码:

table = x=2, y=3, z=2

function printTabValue(tab, index)
    for k, v in pairs(tab[index]) do
        print(k, v)
    end
end

for k, v in pairs(table[1]) do
    print(k,v)
    table[k] = 5
end

printTabValue(table,1)

我得到这个结果:

执行任务:lua54 c:\Users\Fabio\Documents\tabletop\randomSpawnWithChat.lua

x 2

x 2

终端将被任务重用,按任意键关闭它。

所以,值是一样的。

如何编辑表格内的值?

【问题讨论】:

table[1][k] = 5替换table[k] = 5 用另一个未使用的关键字替换所有出现的table。因为table 已经存在并拥有函数/方法。也称为库:lua.org/manual/5.4/manual.html#6.6 【参考方案1】:
table = x=2, y=3, z=2

等价于

table = 
  [1] = x=2,
  [2] = y=3,
  [3] = z=2,

table[1] 只有一个字段"x" 所以在运行循环之后

for k, v in pairs(table[1]) do
    print(k,v)
    table[k] = 5
end

可以替换为

table["x"] = 5table.x = 5

您的表格如下所示:

table = 
  [1] = x=2,
  [2] = y=3,
  [3] = z=2,
  x = 5,

要更改单个值,您需要做的就是:

table[1].x = 5

【讨论】:

以上是关于在lua中使用循环更改表值的主要内容,如果未能解决你的问题,请参考以下文章

循环中的 Roblox Studio Lua if 语句

从循环/选择语句中插入表值作为变量

循环遍历表值函数

如何在 Lua 中结束循环协程?

Lua 循环

Lua:使用参数引用表值时的问题