[Date Prev][Date Next][Thread Prev][Thread Next]
[Date Index]
[Thread Index]
- Subject: Re: ipairs in Lua 5.3.0-alpha
- From: Coroutines <coroutines@...>
- Date: Tue, 5 Aug 2014 06:58:29 -0700
On Tue, Aug 5, 2014 at 3:53 AM, Luiz Henrique de Figueiredo
<lhf@tecgraf.puc-rio.br> wrote:
> A central point in Lua semantics is that metamethods correspond to
> events that Lua cannot handle. (Metamethods were originally called
> fallbacks, for this reason.) Addition of two numbers is not such an
> event and it is never performed via a metamethod, even if you define one:
>
> Lua 5.2.3 Copyright (C) 1994-2013 Lua.org, PUC-Rio
> > debug.setmetatable(0,{__add=print})
> > a=1
> > b=2
> > =a+b
> 3
> ... but this works:
> > debug.setmetatable(0,{__call=print})
> > a(10,20,30)
> 1 10 20 30
Well yes, I do understand this... I just wish the focus of metamethods
were changed. It'd be inefficient but interesting to expose the base
mechanics through the primitive types having a metatable -- imo. It'd
be really cool to disable adding numbers by unreferencing the C code
that handles __add, for example -- this has always been a dream of
mine :\..