lua-users home
lua-l archive

Re: Iteration and nils

[Date Prev][Date Next][Thread Prev][Thread Next] [Date Index] [Thread Index]


Jerome Vuarand <jerome.vuarand <at> ubisoft.com> writes:
> I found out while looking for 'apairs'...
> here is a simple (tested) implementation:
> 
> function apairs(...)
> local n = select('#', ...)
> return function(a, i)
> if i < n then
> return i+1,a[i+1]
> end
> end, {...}, 0 
> end
Here's a similar form that avoids creating the closure:
local function helper(a, i)
 if i < a.n then return i+1,a[i+1] end
end
function apairs(...)
 return helper, {n=select('#', ...), ...}, 0
end
-- test
function f(...)
 for i,a in apairs(...) do print(i, a) end
end
f("foo", nil, 32, nil)

AltStyle によって変換されたページ (->オリジナル) /