• Subject: Re: finding length of a table
• From: "Matthew M. Burke" <matthew@...>
• Date: Sun, 03 Aug 2008 11:37:45 -0400

```Hans van der Meer wrote:
```
Trying to find in C program the length of a table with lua_objlen that returned zero, though there are entries in the table (I made them myself). Testing in the lua interpreter gives the following results I cannot explain:
```
Lua 5.1.3  Copyright (C) 1994-2008 Lua.org, PUC-Rio
> local io = require "io" print(io, #io)
table: 0x102080    0
> local ta= {"a","b","c"} print(ta, #ta)
table: 0x107af0    3
```
```This is correct according to the reference manual:

```
The length of a table t is defined to be any integer index n such that t[n] is not nil and t[n+1] is nil; moreover, if t[1] is nil, n may be zero. For a regular array, with non-nil values from 1 to a given n, its length is exactly that n, the index of its last value. If the array has "holes" (that is, nil values between other non-nil values), then #t may be any of the indices that directly precedes a nil value (that is, it may consider any such nil value as the end of the array).
```
```
The io table has no entries with integer indices. There are a number of ways that you can get the total number of entries in a table. Following is one, I'm sure others will post better techniques:
```
-- tab is the name of the table whose size you want
function tabLen(tab)
local count = 0
table.foreach(tab, function(k,v) count = count+1 end)
return count
end

-- Matt

```