【问题标题】:Lua tables - Can you use it as an array with key?Lua 表 - 你可以将它用作带有键的数组吗?
【发布时间】:2015-06-10 04:54:46
【问题描述】:
    players={
             {uuid = "abc",name = "TheEisbaer"},
             {uuid= "def",name ="Eisbaer68"},
             {uuid= "ghj",name = "kevin"}
            }
    list={name = "TheEisbaer", name = "Eisbaer68"}

print(list.name) 打印“Eisbaer68”。 如何让它打印“TheEisbaer”?

-

你能做类似print(players[3].uuid) 的事情吗?或者怎么做?

【问题讨论】:

  • 你的意思是想让name字段值对应“abc”的任意uuid字段值?
  • 不,我希望它在玩家和列表相同的情况下输出“true”,在不存在的情况下输出“false”。 if player[2].name==list[2] then true else false, 例如
  • 我想你已经明白了。

标签: arrays lua key lua-table


【解决方案1】:

如果我理解(相信我,这并不容易)你想要做什么:

首先:

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 循环来遍历两个表之间的所有可能组合。

【讨论】:

    猜你喜欢
    • 2023-03-18
    • 1970-01-01
    • 1970-01-01
    • 2013-05-26
    • 2021-05-26
    • 2011-03-31
    • 1970-01-01
    • 2021-04-27
    • 1970-01-01
    相关资源
    最近更新 更多