What's the most efficient way to determine if a table is empty (that is, currently contains neither array-style values nor dict-style values)?
Currently, I'm using next()
:
if not next(myTable) then
-- Table is empty
end
Is there a more efficient way?
Note: The #
operator does not suffice here, as it only operates on the array-style values in the table - thus #{test=2}
is indistinguishable from #{}
because both return 0. Also note that checking if the table variable is nil
does not suffice as I am not looking for nil values, but rather tables with 0 entries (i.e. {}
).
false
wouldn't be an expected key so theif not
worked fine, but I'll probably make a habit of comparing tonil
instead in the future, just as a good habit. And yes, I've been binding common utility functions to local vars for speed. Thanks for the input though. – Earthwork