lua-users home
lua-l archive

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



On 2018-02-11 11:55 AM, albertmcchan wrote:
does comma operator always process from left to right ? is it in the manual ?

items = 0
function count(...)
     items = items + select(''#', ...)
     return items
end

= count(1,2,3), items
3     3
= count(1,2,3), items
6     6

= items, count(1,2,3)
6     9
= items, count(1,2,3)
9     12




I don't think Lua specifies argument evaluation order, either. I can't 
find anything in the manual. Lua makes no guarantees about the execution 
of expressions, only statements.
(Aka x(y(), z()) is UB)

The only guarantee it seems to make is "Both `and` and `or` use short-circuit evaluation; that is, the second operand is evaluated only if necessary.":
http://www.lua.org/manual/5.3/manual.html#3.4.5

--
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.