Lua не имеет строгих массивов, как и другие языки - это только имеет хэш-таблицы. Таблицы в Lua считаются array-like, когда их индексы численно и плотно упакованы, не оставляя пробелов. Индексы в следующей таблице: 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.
ли вы собираетесь для 'op' быть массивом типа таблицы _containing_ массивов, как таблицы с числами в каждом из первых индексов, или вы ищете' ор = {19, 18, 17} '? – Oka