Lua表初始化 - 这里有什么不对

viv*_*ekv 1 lua initialization lua-table

我正在尝试初始化并打印一个表.它只是不工作.知道这个代码有什么问题吗?

--!/usr/bin/env lua


local retv = {}
retv["test"] = 1000

for k,v in ipairs(retv) do
    print (k,v)
end
Run Code Online (Sandbox Code Playgroud)

它什么都不打印.我确信我遗漏了一些非常基本的东西,但我无法弄清楚这一点.

Ded*_*tor 5

forLua中有两种形式的-loop:
数字和泛型for循环.

ipairs(t)是一个迭代器构造函数,最多返回三个适用于泛型的参数,允许您按顺序迭代初始序列(索引1,2,3,...).
可能的实施:

function ipairs(t)
  local i = 0
  return function()
    i = i + 1
    if t[i] ~= nil then
      return i, t[i]
    end
  end
end
Run Code Online (Sandbox Code Playgroud)
local function ipairs_helper(t, i)
  i = i + 1
  if t[i] ~= nil then
    return i, t[i]
  end
end
function ipairs(t)
  return ipairs_helper, t, 0
end
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,这将永远不会使用密钥返回您的条目"test".

相反,你想要的是pairs(t),相当于next, t.
这将迭代所有元素.