lua-users home
lua-l archive

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


filterinplace = function (cond, T)
   local oldsize, newsize = #T, 0
   for i=1,oldsize do
     if cond(T[i]) then
       newsize = newsize + 1
       T[newsize] = T[i]
       -- ^ or: if newsize ~= i then T[newsize] = T[i] end
     end
   end
   for i=newsize+1,oldsize do
     T[i] = nil
   end
   return T
 end
	Sorry, but the code above does not work:

t = { "a", "b", "a", }
filterinplace (function (r) return r=="a" end, t)
for i = 1, #t do print(i,v) end

	The result was:

1	nil
2	nil

	Regards,
		Tomás