[Date Prev][Date Next][Thread Prev][Thread Next]
[Date Index]
[Thread Index]
- Subject: Table functions in Lua 5.2 Reference Manual
- From: Jakob Voss <jakob.voss@...>
- Date: Tue, 26 Apr 2011 11:13:57 +0200
Hi,
I think that mixed and sparse tables (tables with some numeric indices
but not limited to a range 1 to n) are the most difficult issue of Lua
and a source of constant confusion. Unfortunately the Reference Manual
does only help if you very carefully read all of it. Could you please
update section 6.5 (Table Manipulation) of the Lua 5.2 Reference Manual
with some additional hints? The section reads:
Most functions in the table library assume that the table represents
an array or a list. For these functions, when we talk about the
"length" of a table we mean the result of the length operator.
1. What are "most functions" out of six? You should better list them by
name or say "all but ..."
2. Please add "(see §3.4.6)." at the end of the section.
3. It is still not clear how the table methods work if you override the
length operator with a __len metamethod. As I read the definition, this:
t = {[1]="a",[3]="b",[5]="c"}
setmetatable(t,{ len = function() return 5 end })
print( table.concat(t,",") )
should print "a,nil,b,nil,c", but it prints only "a". I only propose to
change this behaviour but it is not what is written in the reference
manual. I have not checked the other table functions, but I know that
the current 5.2 manual does not really help, if I happen to use the
table functions with sparse tables.
4. Is There really need for table.pack? As far as I understand, this
both are equivalent:
t = table.pack(...)
t = {...}; t.n = #t
To clarify, it would be helpful to give the equivalence in the manual.
Jakob
--
Jakob Voß <jakob.voss@gbv.de>, skype: nichtich
Verbundzentrale des GBV (VZG) / Common Library Network
Platz der Goettinger Sieben 1, 37073 Göttingen, Germany
+49 (0)551 39-10242, http://www.gbv.de