[Date Prev][Date Next][Thread Prev][Thread Next] [Date Index] [Thread Index]

• Subject: Re: A question about table's length
• From: Vaughan McAlley <ockegheim@...>
• Date: Tue, 29 Dec 2009 23:48:48 +1100

```It allows for an efficient implementation of the # operator. What
happens (I think) is that as positive indices are added to the table,
Lua searches for any index where t[index] exists and t[index + 1] is
nil. This saves traversing the whole table when adding one element,
which would be a performance hit.

As everyone says, keep your table hole-free and there will be no
problems. An alternative is table.maxn(): see
http://www.lua.org/manual/5.1/manual.html#pdf-table.maxn

Vaughan

2009/12/29 Klaus Ripke <paul-lua@malete.org>:
> On Tue, Dec 29, 2009 at 06:22:23PM +0800, h visli wrote:
>> Yes, I also noticed those words, but it still confusing me, maybe my English is poor, can you put more detailed explanation? Thanks In Advance!
>
> hmm, how to explain "can be any"?
> Does this make any sense to you?
> http://translate.google.de/translate_t?hl=&ie=UTF-8&text=x+CAN+BE+ANY+of+the+indices+that+directly+precedes+a+nil+value&sl=en&tl=zh-CN#
>
> Anyway, another attempt using different words:
> The implementation is allowed to return an arbitrary
> "index n such that t[n] is not nil and t[n+1] is nil".
>
> In your example both 1 and 3 are allowed.
> The definition does not say it must be the lowest or largest such n
> to allow an efficient implementation.
> Still it's well defined for arrays without holes.
>
>
> best
>

```