初学者Lua,Array

时间:2019-02-04 17:19:14

标签: lua

第2行在我的代码中的目的是什么?

local table = {["First"] = 1, ["Second"] = 2, ["Third"] = 3}

for key, value in pairs(table) do
    print(key)
end

结果----------------

First
Second
Third

该行的目的是什么:“对于键,成对的(表)值 打印(键)? 我想知道为什么它是必不可少的。

1 个答案:

答案 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 = 1second = 2等中的三个值。 对于每对,将key设置为表键,并将value设置为其值。然后,在设置了这些变量的情况下,执行doend之间的代码。

因此上面的示例将打印以下内容:

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