Lua 不像其他语言那样有严格的数组——它只有哈希表。 Lua 中的表被认为是类数组,当它们的索引是数字的并且密集排列,不留空隙。下表中的索引为1, 2, 3, 4。
local t = {'a', 'b', 'c', 'd'}
当你有一个类似数组的表时,你可以通过 循环 来检查它是否包含某个值。您可以使用for..in 循环和ipairs 函数来创建通用函数。
local function has_value (tab, val)
for index, value in ipairs(tab) do
if value == val then
return true
end
end
return false
end
我们可以在if 条件中使用上述内容来获得我们的结果。
if has_value(arr, 'b') then
print 'Yep'
else
print 'Nope'
end
重申我上面的评论,您当前的示例代码不是一个类似数组的数字表。相反,它是一个类数组表包含类数组表,它们的每个第一个索引中都有数字。您需要修改上面的函数以使用您显示的代码,使其不那么通用。
local function has_value (tab, val)
for index, value in ipairs(tab) do
-- We grab the first index of our sub-table instead
if value[1] == val then
return true
end
end
return false
end
Lua 不是一个非常庞大或复杂的语言,它的语法非常清晰。如果上述概念对您来说完全陌生,您将需要花一些时间阅读真实的文献,而不仅仅是复制示例。我建议阅读Programming in Lua 以确保您了解基本知识。这是第一版,针对 Lua 5.1。