Lua表 - 你能用它作为带密钥的数组吗?

时间:2015-04-05 17:47:29

标签: arrays lua key lua-table

    players={
             {uuid = "abc",name = "TheEisbaer"},
             {uuid= "def",name ="Eisbaer68"},
             {uuid= "ghj",name = "kevin"}
            }
    list={name = "TheEisbaer", name = "Eisbaer68"}

使用print(list.name)打印“Eisbaer 68”。 如何打印“The Eisbaer”?

-

你可以做print(players[3].uuid)之类的事情或者如何做到这一点?

1 个答案:

答案 0 :(得分:4)

如果我理解(并且相信我,这并不容易)你想要做的事情:

首先:

list={name = "TheEisbaer", name = "Eisbaer68"}

相当于

list={name = "Eisbaer68"}

或者更清楚地说,或许:

list={}
list.name = "TheEisbaer"
list.name = "Eisbaer68"

当您在同一个表中使用相同的键两次时,最新的键值会覆盖前一个键。

您似乎希望在数据库中实现相当于“加入”的功能。如果你想要显示(或者,通常是过滤)来自那些“名字”的玩家的“记录”也出现在列表中,可能是这样的:

players =
  {
   {uuid= 'abc', name = 'TheEisbaer'    },
   {uuid= 'def', name = 'Eisbaer68'     },
   {uuid= 'ghj', name = 'kevin'         },
  }

list = { TheEisbaer=true, Eisbaer68=true }

for _,t in ipairs(players) do
  if list[t.name] then         --if key exists in list table ...
    print(t.name .. ' => ' .. t.uuid)
  end
end

此处列表中包含使查找更简单的键。您也可以采用不同的方式,但可能需要嵌套的FOR循环来遍历两个表之间的所有可能组合。