[Date Prev][Date Next][Thread Prev][Thread Next]
- Subject: Re: rethinking method calls with __mcall metamethod rather than __index/__call
- From: Edgar Toernig <froese@...>
- Date: Sun, 14 Jun 2009 17:48:13 +0200
David Manura wrote:
> As seen, if a set "s" has a method "union", this implies that
> s['union'] is true. For such reason, Penlight  avoids using the
> index operator for membership tests in its set and map ADTs. Also, if
> we use the common technique of storing methods in the metatable
> ("set_mt.__index = set_mt" above), then s['__index'] is not nil
> either, a subtle potential bug or security hole.
And that's the reason why I changed the colon to be an operator
like '.' which looks in the object's metatable (and may trigger
__index/__newindex calls in the metatable's metatable) instead
of the object itself.
A drastic change but I'm happy with it ...