当键是表时,为什么lua-kv对是顺序的

当键是表时,为什么lua-kv对是顺序的,lua,lua-table,Lua,Lua Table,**那么,为什么测试的打印是有序的,而不是每次都是新的测试呢 ipairs(t)返回三个值(迭代器函数、表t和0),以便 用于IPAIR(t)中的i、v阀体端部 将迭代键-值对(1,t[1]),(2,t[2]),…,到 第一个零值 因此,ipairs不适用于测试,因为test不是从索引1开始的序列。它只有两个表键。来自 ipairs(t)返回三个值(迭代器函数、表t和0),以便 用于IPAIR(t)中的i、v阀体端部 将迭代键-值对(1,t[1]),(2,t[2]),…,到 第一个零值 因此,i

**那么,为什么测试的打印是有序的,而不是每次都是新的测试呢

ipairs(t)返回三个值(迭代器函数、表t和0),以便

用于IPAIR(t)中的i、v阀体端部

将迭代键-值对
(1,t[1]),(2,t[2]),…,
到 第一个零值

因此,
ipairs
不适用于测试,因为
test
不是从索引1开始的序列。它只有两个表键。

来自

ipairs(t)返回三个值(迭代器函数、表t和0),以便

用于IPAIR(t)中的i、v阀体端部

将迭代键-值对
(1,t[1]),(2,t[2]),…,
到 第一个零值


因此,
ipairs
不适用于测试,因为
test
不是从索引1开始的序列。它只有两个表键。

第一个循环从不做任何事情
test
没有数组元素,因此
ipairs
返回一个空迭代器。
pairs
不按顺序迭代第一个循环从不执行任何操作
test
没有数组元素,因此
ipairs
返回一个空迭代器。
pairs
不按顺序迭代
local a = {d = 1}
local b = {d = 2}
local test = {}

test[b] = true
test[a] = true

newtest = {
  d = 1,
  c = 2
}
for i in ipairs(test) do
  print(i.d)
end

for k, v in pairs(newtest) do
  print(k, v)
end