将变量与 Lua 表中的所有变量进行比较?
Posted
技术标签:
【中文标题】将变量与 Lua 表中的所有变量进行比较?【英文标题】:Compare a variable to all the variables from a Lua table? 【发布时间】:2021-01-02 10:40:13 【问题描述】:我是一个新的 Lua 用户,我有一些关于将变量与表中的多个值进行比较的问题。
那么,让我们开始吧。
我有一个名为“PLATE”的变量,它等于“AAA 111”。
我还有一个名为“VEHICLES”的表,它有多个类似于 PLATE 的值,例如:AAA 333、AAA 222、AAA 111。
我使用脚本来检查 PLATE 是否等于表中的值。这是脚本:
for i = 1, #Vehicles, 1 do
if PLATE == Vehicles[i].plate then
-- do action
elseif PLATE ~= Vehicles[i].plate then
-- do 2 action
end
end
因为 AAA 111 有索引 3,它首先检查索引 1 和索引 2,然后运行第二个操作。但是,我不希望这种情况发生。我不想先检查表中的所有值,如果它们中的 NONE 是 AAA 111 来运行第二个操作。有没有办法做到这一点?非常感谢!
【问题讨论】:
这能回答你的问题吗? How to check if a table contains an element in Lua? 【参考方案1】:您可以使用 Lua Table-as-Set 来做到这一点。
plates =
function addToSet(set, key) --see the linked answer for more functions like this
set[key] = true
end
function setContains(set, key)
return set[key] ~= nil
end
function checkPlate(PLATE)
if setContains(plates, PLATE) then
print("One of the plates is", PLATE)
else
print("There is no plate", PLATE)
end
end
addToSet(plates, "AAA 111")
addToSet(plates, "AAA 123")
local PLATE = "AAA 123"
checkPlate(PLATE)
PLATE = "AAA 456"
checkPlate(PLATE)
输出:
One of the plates is AAA 123
There is no plate AAA 456
这也比循环更有效,如果您想更改板块表以包含有关板块的更多信息,请使用板块作为字典键,即:
plates =
["AAA 123"] =
["registered"] = '1/2/3'
只要对 addToSet 函数稍作修改,它仍然可以工作。
【讨论】:
以上是关于将变量与 Lua 表中的所有变量进行比较?的主要内容,如果未能解决你的问题,请参考以下文章
如何将变量与 NSArray 中的 NSDictionary 中的对象进行比较?