WoW:API getn: Difference between revisions
Jump to navigation
Jump to search
(The # operator is NOT syntactic sugar, table.getn() is deprecated and # MUST be used) |
mNo edit summary |
||
Line 4: | Line 4: | ||
table.getn(table) | table.getn(table) | ||
{{ | {{ambox | ||
|border=red | |||
|type='''Warning: This article discusses use of a deprecated function.''' | |||
|info=*This function should no longer be used in Lua 5.1 and may be removed in the future. | |||
*Use of it will result in potential future incompatibility.}} | |||
This is used to determine the size of a table. The size of a table is discussed at the top of this page. | This is used to determine the size of a table. The size of a table is discussed at the top of this page. |
Revision as of 17:14, 4 December 2007
Lua/Libshortcut From TableLibraryTutorial of lua-users.org.
table.getn(table)
This is used to determine the size of a table. The size of a table is discussed at the top of this page.
> = table.getn({1,2,3}) -- Lua will count the elements if no size is specified 3 > = table.getn({1,2,3; n=10}) -- note, n overrides counting the elements 10 > t = {1,2,3} > table.setn(t, 10) -- set our own size with setn() > = table.getn(t) 10 > = table.getn({1,2,3,nil,5,6}) -- sequence ends at element 3 due to nil value at 4 3
Note that Lua 5.1 has switched to the # operator. #t is the replacement for table.getn(t)
> print( #{1,2,3} ) 3
getn and the # operator start at index [1] and count up, ceasing when they reach a nil value. This means that if you have a table
t = { [0] = "zero", --will not be counted [1] = "one", --will be counted; 1 [2] = "two", --will be counted; 2 [3] = "three", --will be counted; 3 ["four"] = "four", --will not be counted; returns 3 [5] = "five" } --will never be reached
running getn(t) or #t will return 3, not the expected 4. Although there are 4 indices, it will count to three, see that t[4] is a blank spot, and return with a count of three. It will never reach 5. Furthermore, keys such as t["four"] and array values less than 1 such as t[0] are not counted at all.