Lua有内置的
sum()
函数吗?我似乎找不到一个,我几乎翻遍了文档中的所有地方。也许table.sum()
,或者类似的东西,遵循当前的惯例。但由于我找不到它,我不得不实现它:
function sum(t)
local sum = 0
for k,v in pairs(t) do
sum = sum + v
end
return sum
end
不过,必须实现这么简单的东西似乎有点有趣。是否存在内置函数?
我不同意,在标准库中拥有像
table.sum
这样原始和具体的东西是多余的。
按照以下方式实施
table.reduce
会更有用:
---Reduces an array
---@param list any[] An array
---@param fn function The reduction predicate
---@param init any The initial accumulator value
---@return any The final value of the accumulator
table.reduce = function (list, fn, init)
local acc = init
for k, v in ipairs(list) do
if 1 == k and not init then
acc = v
else
acc = fn(acc, v)
end
end
return acc
end
并将其与简单的 lambda 一起使用:
table.reduce(
{1, 2, 3},
function (a, b)
return a + b
end,
0
)
reduce
的示例实现缺乏类型检查,但您应该明白了。