Re: Definition of a sequence
[
Date Prev][
Date Next][
Thread Prev][
Thread Next]
[
Date Index]
[
Thread Index]
- Subject: Re: Definition of a sequence
- From: Ross Berteig <Ross@...>
- Date: 2015年6月11日 13:48:04 -0700
On 6/11/2015 7:14 AM, Dirk Laurie wrote:
2015年06月11日 10:29 GMT+02:00 Mike <lua-l@inbox.ru>:
I cannot guess the exact rule for the length operator
....
In the Lua 5.1 manual, the following boundary property was
guaranteed:
t[#t] is not nil, but t[#t+1] is.
The exact quote from the 5.1 manual is "The length of a table t is
defined to be any integer index n such that t[n] not nil and t[n+1] is
nil; moreover, if t[1] is nil, n may be zero."
This allows #{} to be zero as it obviously is, and for t[#t+1] to extend
any sequence, even an empty sequence.
For some cases, the guarantee that t[#t+1] is nil is all that is needed;
it provides a guaranteed empty slot in a table used like the registry,
even if the keys do not form a sequence.
That property seems useful, and I am still slightly puzzled about why it
was dropped from later versions. At least it remains clear that
non-numeric keys have no effect on the sequence-nature of a table, so it
is acceptable to have sequences with attributes.
This is no longer documented, perhaps because the user can now
supply a __len that does not have that property.
Obviously a user supplied __len should completely replace the entire
definition of `#` for tables with that __len.
--
Ross Berteig Ross@CheshireEng.com
Cheshire Engineering Corp. http://www.CheshireEng.com/
- References:
- Definition of a sequence, Dirk Laurie
- Re: Definition of a sequence, Tim Hill
- Re: Definition of a sequence, Dirk Laurie
- Re: Definition of a sequence, Tim Hill
- Re: Definition of a sequence, Dirk Laurie
- Re: Definition of a sequence, Tim Hill
- Re: Definition of a sequence, "书呆彭, Peng Yi"
- Re: Definition of a sequence, Andrew Starks
- Re: Definition of a sequence, Mike
- Re: Definition of a sequence, Dirk Laurie