[Date Prev][Date Next][Thread Prev][Thread Next]
[Date Index]
[Thread Index]
- Subject: Re: [Proposal] _GETNAME upvalue
- From: "Soni \"They/Them\" L." <fakedme@...>
- Date: Mon, 21 Jun 2021 22:27:09 -0300
On 2021-06-21 8:45 a.m., Marcus Mason wrote:
> You can already produce this effect in lua. This is not a complete
> recreation because real extension methods (a la C#) should override
> methods no matter where they come from. Lua doesn't have methods so it
> doesn't make sense.
>
> https://gist.github.com/Mehgugs/385557d1c88860b46239a796907d8bd8
> <https://gist.github.com/Mehgugs/385557d1c88860b46239a796907d8bd8>
>
> Personally this seems a bit pointless because you can just use __index
> on a proxy table to achieve this effect since there's no methods and
> symbol resolution in lua.
_GETNAME is much cleaner: It can be exposed to a sandbox, works with all
objects (and types), works with debug symbols stripped, supports dynamic
dispatch, doesn't involve wrapping/unwrapping, actually handles proxying
(where other modules go through your module to access stuff, i.e. t[key]
syntax, which should not be overridden), among other things.
There's no way you can be serious about this "solution".
>
> On Mon, Jun 21, 2021 at 12:39 PM Notabored guy <notaboredguy@gmail.com
> <mailto:notaboredguy@gmail.com>> wrote:
>
> I personally don't see the use of it.
>
> On Mon, Jun 21, 2021, 12:48 Soni "They/Them" L. <fakedme@gmail.com
> <mailto:fakedme@gmail.com>> wrote:
>
>
>
> On 2021-06-21 4:33 a.m., Egor Skriptunoff wrote:
> > Why might we want to redefine methods of an object locally
> (inside the
> > current module) instead of globally (everywhere the object
> appears)?
> > Please provide real-life examples
> >
>
> local _GETNAME = function(o, k)
> if type(o) == "table" and k == "insert" then return
> table.insert end
> return o[k]
> end
>
> This allows doing t:insert(foo) on any table t.
>