[Date Prev][Date Next][Thread Prev][Thread Next]
[Date Index]
[Thread Index]
- Subject: Re: Removing holes from a list
- From: "Joseph Manning" <manning@...>
- Date: Mon, 28 Sep 2015 12:21:32 +0100
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
------------------------------------------------------------------------