Lua表 - 你可以把它用作带键的数组吗?

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),或者有其他方法吗?

点赞
用户3735873
用户3735873

如果我理解得对的话(相信我,这不容易),你想要做的是:

首先:

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

相当于

list={name = "Eisbaer68"}

或者更清晰地说:

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

因为你在同一张表格中使用了相同的键,最近的键值会覆盖原先的键值。

看起来你想要实现类似于数据库中的“join”。如果你想要显示(或者通常过滤)那些在 list 中也出现了的“players”记录,你可以像这样做:

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         --如果键存在于 list 表中 ...
    print(t.name .. ' => ' .. t.uuid)
  end
end

这里的 list 具有键,使查找更简单。你也可以采用不同的方法,不过这可能需要嵌套的 FOR 循环来遍历两个表格之间的所有可能组合。

2015-04-05 20:59:23