lua-users home
lua-l archive

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




On 21/06/16 08:43 PM, Nagaev Boris wrote:
On Tue, Jun 21, 2016 at 11:17 PM, Soni L. <fakedme@gmail.com> wrote:

On 21/06/16 05:15 PM, Patrick Donnelly wrote:
On Tue, Jun 21, 2016 at 3:59 PM, Sean Conner <sean@conman.org> wrote:
It was thus said that the Great Patrick Donnelly once stated:
On Tue, Jun 21, 2016 at 3:22 PM, Soni L. <fakedme@gmail.com> wrote:
But varargs (and thus varargs-based arrays) are nil-safe by default.
Show me in the manual where it says **tables** are not nil safe and
I'll stop posting to lua-l*.
    Lua 5.3, section 3.4.7:

          Unless a __len metamethod is given, the length of a table t is
only
          defined if the table is a sequence, that is, the set of its
positive
          numeric keys is equal to {1..n} for some non-negative integer n.
In
          that case, n is its length. Note that a table like

               {10, 20, nil, 40}

          is not a sequence, because it has the key 4 but does not have
the
          key 3.  (So, there is no n such that the set {1..n} is equal to
the
          set of positive numeric keys of that table.) Note, however, that
          non-numeric keys do not interfere with whether a table is a
          sequence.

    But for this discussion:

function foo(...) print(select('#',...) end
function bar(t)   print(#t)             end

foo(1,2,3,4)
4
bar{1,2,3,4}
4
foo(nil,nil,3,nil)
4
bar{nil,nil,3,nil}
0
There's an echo in this room. Apparently emphasizing **tables** is
lost on people so let me be crystal clear: table length is only
defined for sequences. __So__, while sequences are not nil-safe, that
does __not__ mean tables are not nil-safe.

Thus, tables are not suitable as proper arrays.
Why do you want to put nil into a proper array? For me, a proper array
is an array of elements of same type, e.g. array of integers. If some
element in an array is nil (and other are not nil), there is no single
type for all elements, so it is not a proper array.
For me, a proper array in Lua would be an array of pointers. This inculdes nil aka null pointers.


--
Disclaimer: these emails may be made public at any given time, with or
without reason. If you don't agree with this, DO NOT REPLY.





--
Disclaimer: these emails may be made public at any given time, with or without reason. If you don't agree with this, DO NOT REPLY.