Lua 一行中有多个局部变量

假设我们有以下代码:

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

我知道第二行后 x 的值将变为 2,但是,第二行中的局部变量语句是否创建了新的 x,还是使用了之前的变量?

点赞
用户1442917
用户1442917

他们将成为两个不同的本地值:第一个值将被遮蔽,第二个值与第一个值在同一块中使用相同的名称创建,并且无法访问第一个值。以下是此脚本的 luac -l-l(Lua5.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,它们具有相同的作用域。

2017-02-25 00:54:55