Как сложить таблицу чисел в Lua? - PullRequest
6 голосов
/ 02 января 2012

Имеет ли Lua встроенную функцию sum()?Я не могу найти один, и я посмотрел почти всюду в документации.Может быть table.sum() или что-то подобное, чтобы следовать действующим соглашениям.Но так как я не мог его найти, мне пришлось его реализовать:

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

    return sum
end

Хотя, кажется, довольно забавно реализовывать что-то такое простое.Существует встроенная функция или нет?

1 Ответ

13 голосов
/ 02 января 2012

Я не согласен, было бы излишним иметь что-то такое примитивное и специфичное, как table.sum в стандартной библиотеке.

Было бы более полезно реализовать table.reduce в соответствии с:

table.reduce = function (list, fn) 
    local acc
    for k, v in ipairs(list) do
        if 1 == k then
            acc = v
        else
            acc = fn(acc, v)
        end 
    end 
    return acc 
end

И используйте его с простой лямбдой:

table.reduce(
    {1, 2, 3},
    function (a, b)
        return a + b
    end
)

В примере реализации reduce отсутствует проверка типов, но вы должны понять.

...