Lua tables - 你可以将它用作带键的数组吗?
Lua tables - Can you use it as an array with key?
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)
的事情吗?或者你会怎么做?
如果我理解(并且相信我,这并不容易)您想要做什么:
首先:
list={name = "TheEisbaer", name = "Eisbaer68"}
相当于
list={name = "Eisbaer68"}
或者,更清楚地说,也许:
list={}
list.name = "TheEisbaer"
list.name = "Eisbaer68"
当您在同一个 table 中使用同一个密钥两次时,最新的密钥值会覆盖之前的密钥值。
您似乎想在数据库中实现相当于 'join' 的功能。如果你想显示(或者,一般来说,过滤)那些 'name' 也出现在列表中的玩家的 'records',可能是这样的:
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 循环来遍历两个 tables.
之间所有可能的组合。
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)
的事情吗?或者你会怎么做?
如果我理解(并且相信我,这并不容易)您想要做什么:
首先:
list={name = "TheEisbaer", name = "Eisbaer68"}
相当于
list={name = "Eisbaer68"}
或者,更清楚地说,也许:
list={}
list.name = "TheEisbaer"
list.name = "Eisbaer68"
当您在同一个 table 中使用同一个密钥两次时,最新的密钥值会覆盖之前的密钥值。
您似乎想在数据库中实现相当于 'join' 的功能。如果你想显示(或者,一般来说,过滤)那些 'name' 也出现在列表中的玩家的 'records',可能是这样的:
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 循环来遍历两个 tables.
之间所有可能的组合。