WoW:API getn: Difference between revisions

From AddOn Studio
Jump to navigation Jump to search
mNo edit summary
(The # operator is NOT syntactic sugar, table.getn() is deprecated and # MUST be used)
Line 3: Line 3:


  table.getn(table)
  table.getn(table)
{{band-red|'''Warning:''' This article discusses use of a deprecated function. 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.
Line 17: Line 19:
  3
  3


Note that Lua 5.1 supports the use of the # operator.  #t is syntactic sugar for table.getn(t)
Note that Lua 5.1 has switched to the # operator.  #t is the replacement for table.getn(t)


   > print( #{1,2,3} )
   > print( #{1,2,3} )

Revision as of 08:26, 18 May 2007

Lua/Libshortcut From TableLibraryTutorial of lua-users.org.

table.getn(table)

Template:Band-red

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.

See Also

Template:LUA