如何在Lua中对数字表进行求和?

Lua 有内置的 sum() 函数吗?我似乎找不到它,我已经在文档的几乎每个地方都找过了。或许应该要有一个 table.sum() 这样的函数,遵循当前的惯例。但是既然我找不到,我只能自己实现:

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

    return sum
end

不过,实现这样简单的功能似乎有点儿好笑。是不是存在内置的函数呢?

原文链接 https://stackoverflow.com/questions/8695378

点赞
stackoverflow用户352796
stackoverflow用户352796

我不同意,在标准库中添加像 table.sum 这种原始而具体的函数是多余的。

实现 table.reduce 更有用,例如:

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
)

reduce 的示例实现缺少类型检查,但你应该会明白这个想法。

2012-01-01 21:05:04