Lua nie ma ścisłych, takich jak tablice innych językach - ma tylko tabele mieszania. Tabele w Lua są traktowane jako w postaci tablicowych, takich jak, gdy ich indeksy są liczbowo i gęsto upakowane, nie pozostawiając żadnych przerw. Indeksy w poniższej tabeli będą następujące: 1, 2, 3, 4
.
local t = {'a', 'b', 'c', 'd'}
Kiedy masz tablicę array-jak można sprawdzić, czy zawiera on pewną wartość przez pętli przez stół. Można użyć pętli for..in
i funkcji ipairs
, aby utworzyć funkcję ogólną.
local function has_value (tab, val)
for index, value in ipairs(tab) do
if value == val then
return true
end
end
return false
end
Możemy wykorzystywać powyższe w sposób if
warunkowy, aby nasz wynik.
if has_value(arr, 'b') then
print 'Yep'
else
print 'Nope'
end
Aby powtórzyć mój komentarz powyżej, Twój obecny przykładowy kod nie jest tablicową tablicą liczb. Zamiast tego jest tablica tablicowa, która zawiera tablice tablicowe, które mają numery w każdym z ich pierwszych indeksów. Musisz zmodyfikować powyższą funkcję, aby pracować z pokazanym kodem, czyniąc go mniej ogólnym.
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 nie jest językiem bardzo dużym lub złożonym, a jego składnia jest bardzo jasna. Jeśli powyższe pojęcia są dla ciebie całkowicie obce, musisz poświęcić trochę czasu na czytanie prawdziwej literatury, a nie tylko kopiowanie przykładów. Radziłbym przeczytać Programming in Lua, aby upewnić się, że rozumiesz podstawy. To pierwsza edycja, skierowana do Lua 5.1.
czy zamierzasz za 'op' być tablicą podobny stół _containing_ tablicy podobny tabele z numerami w każdym z pierwszych wskaźników, lub szukasz' op = {19, 18, 17} '? – Oka