[Date Prev][Date Next][Thread Prev][Thread Next]
[Date Index]
[Thread Index]
- Subject: Re: Assignment Expressions in Lua
- From: v <v19930312@...>
- Date: Tue, 23 Jul 2019 18:37:59 +0300
On Tue, 2019-07-23 at 16:59 +0200, nobody wrote:
> On 23/07/2019 16.10, Pedro Tammela wrote:
> > In Python 3.8 there will be a new feature introducing Assignment
> > Expressions[1]. One of the reasons for such feature is to improve
> > code readability, among other things.
> >
> > Would assignment expressions improve Lua code readability?
> >
> > [1] https://www.python.org/dev/peps/pep-0572/
>
> (What about multiple-return expressions: Can you assign only the
> first
> value or all of them? If only the first, do the return values
> truncate
> to one result or do they still all go through? Is this a pure
> side-effect (assign x, result is x) or a store-read (assign x, read x
> (which may have been changed by __newindex/__index))? Etc. etc. …)
>
> -- nobody
I actually think that this isn't bad idea overall, but there's my point
of view onto this: assignment should pass its results after assigning
them (like it does in C/C++). Consider this:
a,g = self.data = local b = {},{}
This creates table, assigns it to local `b`, stores it into `self.data`
and assigns it to global `a`, without indexing `self` and *as well*
assigns different table to `b`.
This may come handy in other cases as well, but multireturn make it
uglier sometimes. For example:
local err,_ -- Define local _
if local val = _,err = returnValOrErr() then
...
end
is pretty ugly and it always will be when you need some complicated
multret.
However, I do approve this idea if it will allow to define variable
inside `if` condition.
--
v <v19930312@gmail.com>