[Date Prev][Date Next][Thread Prev][Thread Next]
[Date Index]
[Thread Index]
- Subject: Re: Let's talk about order of assignment
- From: Hao Wu <wuhao.wise@...>
- Date: Sun, 14 Sep 2014 13:44:03 -0700
On Sun, Sep 14, 2014 at 1:08 PM, Peter Melnichenko <mpeterval@gmail.com> wrote:
> 14.09.2014 21:33 "Thiago L." <fakedme@gmail.com>:
>
>
>>
>> For example:
>>
>> Lua 5.2.3 Copyright (C) 1994-2013 Lua.org, PUC-Rio
>> > setmetatable(_ENV, {__newindex = function(t,k,v) if k == "out" then
>> > io.write(v) end end}) out,out,out = "what","the","fuck"
>> fuckthewhat>
>>
>
I am not sure this is right, but here is my thought:
> More magic:
>
>> local a, a, a = 1, 2, 3; print(a)
> 3
In this case, the latter a is defined and overrode the previous one, thus used.
>> b, b, b = 1, 2, 3; print(b)
> 1
the stack is popped in the reversed order so the first b is assigned
lastly (the same as the OP's example)
Another test I did kinda proved my theory:
> local a = 1; function foo() a = a+1; return a; end;
> local b,c,d = foo(), foo(), foo(); print(b,c,d)
2 3 4
>local b,b,b=foo(),foo(),foo(); print(b)
7