第2行在我的代码中的目的是什么?
local table = {["First"] = 1, ["Second"] = 2, ["Third"] = 3}
for key, value in pairs(table) do
print(key)
end
结果----------------
First
Second
Third
该行的目的是什么:“对于键,成对的(表)值 打印(键)? 我想知道为什么它是必不可少的。
答案 0 :(得分:3)
正如其他人在评论中建议的那样,您应该首先阅读用Lua编程。它将对此进行更多解释,并且如果您想学习Lua,那么它确实是一个理想的起点。
给出这样的表格
local tab = {first = 1, second = 2, third = 3}
通常迭代表中所有键值对的方式是这样的
for key, value in pairs(tab) do
print(key .. ": " .. tostring(value))
end
这将遍历表first = 1
,second = 2
等中的三个值。
对于每对,将key
设置为表键,并将value
设置为其值。然后,在设置了这些变量的情况下,执行do
和end
之间的代码。
因此上面的示例将打印以下内容:
first: 1
second: 2
third: 3
这有点复杂;首先,让我们看看pairs
实际返回的内容:
> t = {}
> print(pairs(t))
function: 68f18400 table: 0066b1d8 nil
作为第二个参数返回的表与我们传入的表相同。
pairs
返回的函数是next
函数,给定一个表和一个键,该函数以未知顺序返回表中的下一个键,而无需重复键。 / p>
您可以在命令行上轻松确认这一点。
> print(t)
table: 0066b1d8
> print(next)
function: 68f18400
然后,Lua将for循环转换为以下内容:
do
local f, state, iterator = next, tab, nil -- this is what's returned by pairs
while true do
local key, value = f(state, iterator)
if key == nil then break end
iterator = key
print(key, value) -- This is the body of our for loop
end
end