Lua一行不止一位当地人

Lua more than one locals in one line

假设我们有以下代码:

local x = 1
local x, y = 2, 3

我知道x在第二行之后会变成2,但是,那一行的本地是创建一个新的x,还是使用之前的那个?

它们将是两个不同的本地值:第一个将被隐藏且不可访问,因为第二个是在同一块中以相同名称创建的。以下是 luac -l -l (Lua 5.3) 为该脚本显示的信息:

main <local.lua:0,0> (4 instructions at 00697ae8)
0+ params, 3 slots, 1 upvalue, 3 locals, 3 constants, 0 functions
    1   [1] LOADK       0 -1    ; 1
    2   [2] LOADK       1 -2    ; 2
    3   [2] LOADK       2 -3    ; 3
    4   [2] RETURN      0 1
constants (3) for 00697ae8:
    1   1
    2   2
    3   3
locals (3) for 00697ae8:
    0   x   2   5
    1   x   4   5
    2   y   4   5
upvalues (1) for 00697ae8:
    0   _ENV    1   0

locals 部分显示了三个变量,其中两个 x 具有相同的范围结束位置。