Lua - 从嵌套表中获取值

Posted

技术标签:

【中文标题】Lua - 从嵌套表中获取值【英文标题】:Lua - Getting values from nested tables 【发布时间】:2014-08-27 06:32:24 【问题描述】:

好的,我一直在到处寻找这个,但没有答案。

我有一个嵌套表(一个例子):


  
    "Username",
    "Password",
    "Balance",
  ,
  
    "username1",
    "password1",
    1000000,
  ,
  
    "username2",
    "password2",
    1000000,
  ,

问题是我不能迭代循环来查看这些表,也不能从表中获取值。 没有嵌套表可以轻松访问,例如:

print(a[1])

如何循环它们并从中获取值?

【问题讨论】:

当您执行print(a[1]) 时会发生什么?你试过print(a[1][1])吗? 【参考方案1】:

使用pairsipairs 遍历表:

local t = 
  
    "Username",
    "Password",
    "Balance",
  ,
  
    "username1",
    "password1",
    1000000,
  ,
  
    "username2",
    "password2",
    1000000,
  ,


for _, v in ipairs(t) do
  print(v[1], v[2],v[3])
end

将打印:

Username    Password    Balance
username1   password1   1000000
username2   password2   1000000

【讨论】:

我认为在这种情况下 ipairs 是更好的选择【参考方案2】:

如果你有

a =  
    "Username", "Password", "Balance", ,
    "username1", "password1", 1000000, ,
    "username2", "password2", 1000000, ,

那么a 的第二个元素将是a[2],表格 "username1", "password1", 1000000, 。如果你打印它,它看起来类似于table: 0x872690 - 它只是默认情况下在 Lua 中打印表格的方式。要访问内部字段,您只需使用相同的索引运算符。对于第一个字段我们使用a[2][1],对于第二个字段我们使用a[2][2],依此类推。

 for i = 2, #a do
     print(a[i][1], a[i][2], a[i][3])
 end

【讨论】:

以上是关于Lua - 从嵌套表中获取值的主要内容,如果未能解决你的问题,请参考以下文章

基于另一个计数值,遍历嵌套表 - LUA

当嵌套表属于记录类型时,如何将数据填充到 Oracle 中的嵌套表中

无法将值存储到 oracle 中的嵌套表中

如何从 C++ 读取和写入嵌套的 lua 表?

从 User 表中获取嵌套的 UserRoles

从嵌套的dict中选择一个随机值,并在另一个嵌套的dict中更新它