如何在 LUA 中获取 2 个表的总和?

x = {1, 2, 3}
y = {4, 5, 6}
z = x + y

我有两个表 x 和 y,只想创建一个第三个表,其中仅为它们中的元素总和。我在尝试中使用上述 LUA 代码,但这会出现错误输入:3:尝试对表值进行算术运算(全局 'x')......

例如,我希望结果为z = {5, 7, 9}

请建议有帮助的函数,或请帮助我形成这样一个在 LUA 中的函数。 谢谢

点赞
用户11740758
用户11740758

是的,使用 table.concat() 来迭代和检查

做...

x = {1, 2, 3}
y = {4, 5, 6}
z = {}

-- 首先检查两个表是否具有相同的长度,如果是,则将它们的和添加到 z 表中
if #x==#y then
for i=1,#x do
 z[i]=x[i]+y[i]
end
end

print(table.concat(z,' '))
-- 输出:5 7 9

...结束

2021-04-24 18:05:33
用户2858170
用户2858170

你无法在 Lua 中添加表格,除非你实现了 __add 元方法。

对于两个序列的逐元素求和,只需执行以下操作:

function sumElements(t1,t2)
  local result = {}
  for i = 1, math.min(#t1, #t2) do
    result[i] = t1[i] + t2[i]
  end
  return result
end

当然,你应该验证输入,并考虑如何处理大小不匹配的表格。假设 t1 有 3 个元素,t2 有 5 个元素,你会只有 3 个结果值还是会在剩下的 2 个上加 0 呢?

2021-04-24 18:05:42