lua-users home
lua-l archive

Re: Removing holes from a list

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


On 2015-Sep-27 (Sun) at 10:25 (-0300), Soni L. wrote:
>> Would this work?
>> 
>> list=table.pack(1,2,3,nil,4,5,nil,nil,6,7)
>> 
>> local n=0
>> for i=1,list.n do
>> if list[i]~=nil then
>> n=n+1
>> list[n]=list[i]
>> list[i]=nil
>> end
>> end
>> list.n=n
>> 
>> for k,v in ipairs(list) do print(k,v) end
Soni,
 No, it would not work.
 If 'list' has some non-nil elements at its start, they will get
 set to nil by the statement 'list[i]=nil'.
 You could fix it by instead writing
 if i > n then list[ i ] = nil end
 but at this stage, the logic may be getting slightly clumsy.
 Dirk's solution, although it involves an additional for-loop,
 seems a little clearer.
Joseph
------------------------------------------------------------------------
Joseph Manning / Computer Science / UCC Cork Ireland / manning@cs.ucc.ie
------------------------------------------------------------------------

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