假设我们有以下代码:

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的三个变量,它们的作用域范围相同。

关于lua - Lua在一行中有多个本地人,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42450568/

10-10 11:40