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

• Subject: Re: Thoughts on {...} and tbl[nil]
• From: Sean Conner <sean@...>
• Date: Fri, 8 Jun 2018 15:19:35 -0400

```It was thus said that the Great Rodrigo Azevedo once stated:
>
> Let's try an even simpler model: (alternative to a specific table
> constructor)
>
> Definitions: t is a table
>
> 0) a 'sequence' is a continuous set of integer keys with non-nil values
> 1) #t (rawlen) operator: biggest non-zero positive integer key of the
> sequence starting from key 1 [1]
> 2) t# (rawborder) operator: biggest non-zero positive integer key assigned
> (rawset)

t    = {}
t[3] = 3
t[1] = 1
t[5] = 5
t[2] = 2
t[4] = 4

#t == 5 -- because this is a sequence
t# == 5 -- because 5 is the largest non-zero positive integer key

table.remove(t)

#t   == 4 -- because this is still a sequence
t#   == 4 -- beause we removed 5
t[4] == 4 -- because we removed the last element

table.remove(t,1)

#t   == 3 -- beacuse this is still a sequence
t#   == 4 -- because 4 is still the largest non-zero positive integer key
t[3] == 4 -- because we removed the first element

t[500] == 500

#t == 3   -- because this is still a sequence
t# == 500 -- because 500 is still the largest non-zero positive integer key

table.remove(t,2)

#t     == 2   -- because this is still a sequence
t#     == 500 -- because 500 is still the largest non-zero positive integer key
t[2]   == 4   -- because we removed an element
t[500] == 500 -- because this isn't part of the sequence

> Examples:
>
> t = {1,2,3,4,5,nil,nil,8,nil} -- two sequences
> #t is 5
> t# is 9

table.remove(t)

Which element was removed?  Where will you find '8'?  Is this an issue?

-spc

```