lua-users home
lua-l archive

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


On 16 February 2016 at 13:19, Dirk Laurie <dirk.laurie@gmail.com> wrote:
> It seemed such a good idea at the time, `ipairs` respecting the
> __index metamethod. After burning my fingers a few times with
> it, though, I find it simpler not to use `ipairs` at all, instead of
> pondering each time whether ipairs will behave.
>
> Example 1. XML tables. These are lists in which the items
> are either scalars or XML tables, and which also have some
> "attributes", i.e. string-valued keys associated with scalar values.
> The context is very often one in which the items take default
> attributes from the containing value by specifying it as __index.
>
> Unfortunately numerical keys are also inherited. If you traverse
> a subtable via 'ipairs', it will look for an item in the parent table
> when the subtable is exhausted. And all the way back to the
> top-level table.

That of course depends on the design of your XML-handling library. I
see it as a problem of the library and not of ipairs. (Out of
curiosity, which library does this? TBH it would surprise me when
reading a subtag if it inherited its parents attributes at all.)

-- Hisham