gpt4 book ai didi

lua - Lua 中的变量交换是如何工作的?

转载 作者:行者123 更新时间:2023-12-04 22:31:22 28 4
gpt4 key购买 nike

在下面的代码中,谁能解释一下 b,a = a,b 内部是如何工作的?

-- Variable definition:
local a, b
-- Initialization
a = 10
b = 30

print("value of a:", a)

print("value of b:", b)

-- Swapping of variables
b, a = a, b
print("value of a:", a)

print("value of b:", b)

最佳答案

考虑 Lua 脚本:

local a, b
a = 10
b = 30
b, a = a, b

运行 luac -l在它上面,你会得到这个:
    1   [1] LOADNIL     0 1
2 [2] LOADK 0 -1 ; 10
3 [3] LOADK 1 -2 ; 30
4 [4] MOVE 2 0
5 [4] MOVE 0 1
6 [4] MOVE 1 2
7 [4] RETURN 0 1

这些是给定脚本的 Lua VM 指令。局部变量被分配给寄存器 0 和 1,然后寄存器 2 用于交换,就像您手动使用临时变量所做的一样。实际上,下面的 Lua 脚本生成了完全相同的 VM 代码:
local a, b
a = 10
b = 30
local c=a; a=b; b=c

唯一的区别是,如果脚本更长、更复杂,编译器将在第一种情况下重用寄存器 2。

关于lua - Lua 中的变量交换是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23006273/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com