diff --git a/koptilnya/libs/table.txt b/koptilnya/libs/table.txt index d48056f..ec4dbed 100644 --- a/koptilnya/libs/table.txt +++ b/koptilnya/libs/table.txt @@ -57,18 +57,18 @@ end function table.map(tbl, action) local res = {} - for _, field in ipairs(tbl) do - table.insert(res, action(field)) + for idx, field in ipairs(tbl) do + table.insert(res, action(field, idx)) end return res end -function table.filter(tbl, predicate) +function table.filter(tbl, filterFunc) local res = {} - for _, field in ipairs(tbl) do - if predicate(field) == true then + for idx, field in ipairs(tbl) do + if filterFunc(field, idx) == true then table.insert(res, field) end end @@ -84,13 +84,11 @@ function table.find(tbl, predicate) end end -function table.reduce(tbl, func, init) - init = init or 0 - +function table.reduce(tbl, reducer, init) local accum = init - for _, field in ipairs(tbl) do - accum = accum + func(field) + for idx, field in ipairs(tbl) do + accum = reducer(accum, field, idx) end return accum