Lua chunk iterator for fixed-size batches
Lua
local function chunks(seq, size)
assert(size >= 1, 'chunk size must be at least 1')
local i = 0
return function()
local first = i + 1
if first > #seq then return nil end
local last = math.min(first + size - 1, #seq)
i = last
local part = {}
for j = first, last do part[#part + 1] = seq[j] end
return part, first
end
end
local it = chunks({ 1, 2, 3, 4, 5, 6, 7 }, 3)
for part, start in it do
print(start, table.concat(part, ','))
end