为什么这个函数在Lua中将一个表的内容添加到一起时不返回任何内容

为什么这个函数在Lua中将一个表的内容添加到一起时不返回任何内容,lua,sum,lua-table,Lua,Sum,Lua Table,我一直试图将一个表的内容(所有整数)相加形成一个和。我正在做一个最终目标是百分比的项目。我把不同的数量放在一张桌子里。然后我想把表中所有的整数相加,得到一个和。我在标准库中找不到任何东西,所以我一直在使用这个: function sum(t) local sum = 0 for k,v in pairs(t) do sum = sum + v end return sum 然而,它没有给我任何回报金额后。。。。非常感谢您提供的任何帮助。对于减少表格内容(在本例中是通过对元素求和)这一

我一直试图将一个表的内容(所有整数)相加形成一个和。我正在做一个最终目标是百分比的项目。我把不同的数量放在一张桌子里。然后我想把表中所有的整数相加,得到一个和。我在标准库中找不到任何东西,所以我一直在使用这个:

function sum(t)
local sum = 0
for k,v in pairs(t) do
    sum = sum + v
end

return sum

然而,它没有给我任何回报金额后。。。。非常感谢您提供的任何帮助。

对于减少表格内容(在本例中是通过对元素求和)这一问题,更通用的解决方案是(警告:代码草图中没有类型检查)

如果函数根本没有返回,可能是因为函数定义中缺少
end
语句

如果函数返回零,则作为参数传递的表可能存在问题。换句话说,参数
t
可以是
nil
或空表。在这种情况下,函数将返回零,即初始化
局部和的值

如果在调试循环中添加
print(k,v)
,则可以确定该函数是否需要添加任何内容。因此,我会尝试:

local function sum ( t ) do
   print( "t", t ) -- for debugging: should not be nil
   local s = 0
   for k,v in pairs( t ) do
        print(k,v) --for debugging
        s = s + v
   end
   return s
end
local myTestData = { 1, 2, 4, 9 }
print( sum( myTestData) )
运行此代码时的预期输出为

t   table: [some index]
1   1
2   2
3   4
4   9
16

请注意,我已将函数中的变量名从
sum
更改为
s
。最好不要使用函数名
sum
作为函数定义中保存sum的变量。函数中的
局部和
会覆盖全局和,因此,例如,您不能递归调用
sum()
(即在
sum()
的定义中调用
sum()
)。

返回和之后,在missing中调用
end
(关闭函数定义)。