lua-users home
lua-l archive

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



On 2021-06-17 1:32 p.m., Francisco Olarte wrote:
> On Thu, Jun 17, 2021 at 5:35 PM Domingo Alvarez Duarte
> <mingodad@gmail.com> wrote:
> > Isn't this the general pattern in Lua to always create a new variable
> > and shadow any existing one with the same name, without telling anything
> > to the user ?
>
> function x() does not create a new variable, it uses a created one (
> either local or global, although you may consider the global one as
> "created" )
>
> The problem is:
> ----------
> $ cat u.lua && lua u.lua
> local x <const> = nil
> function x() end
>
> local y <const> = nil
> y = function() end
>
> lua: u.lua:5: attempt to assign to const variable 'y'
> -------
> Coupled with the definition in 3.4.11
> ---
> The statement
>      function f () body end
> translates to
>      f = function () body end
> ---
> Which mean they should both pass or fail. No new vars created by the
> function lines, which will be the case if "local function" where used.
>
> Francisco Olarte.

Hmm...

We guess there's no way to make safe self-referential functions in Lua?

local function x <const>() end -- doesn't work