lua-users home
lua-l archive

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




On 20/12/15 05:41 AM, Dirk Laurie wrote:
2015-12-20 6:19 GMT+02:00 Egor Skriptunoff <egor.skriptunoff@gmail.com>:
On Fri, Dec 18, 2015 at 3:19 PM, Rena <hyperhacker@gmail.com> wrote:
The exception is when it's ambiguous:
x = f
(a or b):c()
That expression could be interpreted as two statements or one (remove the
line break and see). In that case Lua is kind enough to make an exception to
the "ignore whitespace" rule and raise an error
Really?
I've always thought that Lua treats this chunk as absolutely correct way to
write the following code:
x = (f(a or b)):c()
It depends on the Lua version. It changed between Lua 5.1 and Lua 5.2,
A linebreak between a function and its arguments used to be illegal,
and an error message was issued. As from 5.2, no matter what whitespace
sits between the two parts (several blank lines if you like), x = (f(a
or b)):c()
is performed.

It changed bewteen Lua 5.0 and Lua 5.2.

In Lua 5.0, a linebreak between a function and its arguments made 2 statements, not a function and its arguments. (so a newline worked like a semicolon) In Lua 5.1, it was changed to an error, as a sort of "transition period" (see also: print[[a[[b]]--c]] in Lua 5.0 vs Lua 5.1 vs Lua 5.2).
In Lua 5.2, the error was removed.

--
Disclaimer: these emails may be made public at any given time, with or without reason. If you don't agree with this, DO NOT REPLY.