gpt4 book ai didi

lua - 为什么 t[1] 输出为 1 对于本地 t = {1, [1] = "a", [2] = "b"}

转载 作者:行者123 更新时间:2023-12-01 09:12:37 24 4
gpt4 key购买 nike

测试代码:

local t = {1, [1] = "a", [2] = "b"}
print("t[1]: ", t[1])
for _, v in pairs(t) do
print(v)
end

输出:

t[1]: 1
1
b

最佳答案

如果您有重复的键,则不定义在表构造函数中设置字段的顺序。

目前,编译器对列表条目进行批处理(每批 50 个列表条目)。

可以通过在脚本上运行 luac -l 来查看构造函数的字节码:

1   [1] NEWTABLE    0 1 2
2 [1] LOADK 1 -1 ; 1
3 [1] SETTABLE 0 -1 -2 ; 1 "a"
4 [1] SETTABLE 0 -3 -4 ; 2 "b"
5 [1] SETLIST 0 1 1 ; 1

注意最后的SETLIST。对于{10,20,30, [1] = "a", [2] = "b"},字节码为:

1   [1] NEWTABLE    0 3 2
2 [1] LOADK 1 -1 ; 10
3 [1] LOADK 2 -2 ; 20
4 [1] LOADK 3 -3 ; 30
5 [1] SETTABLE 0 -4 -5 ; 1 "a"
6 [1] SETTABLE 0 -6 -7 ; 2 "b"
7 [1] SETLIST 0 3 1 ; 1

如果构造函数以长度为 60 的列表开头,那么 t[1] 的最终值将是“a”。

关于lua - 为什么 t[1] 输出为 1 对于本地 t = {1, [1] = "a", [2] = "b"},我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56182914/

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