Sto tentando di confrontare due tabelle di uguale lunghezza con una funzione, poiché non conosco altro modo per farlo. Tuttavia, con la seguente funzione, non riesce a registrarsi e non ho idea del perché. Spero che qualcuno possa fornire informazioni su questo problema o avere un modo migliore di confrontare le due tabelle.Confronto di due tabelle indice per valore indice in lua
Le tabelle vengono popolati con il seguente codice:
str = "parameters determined by program (all digits)"
tableone = {}
for word in str:gmatch("%d") do table.insert(tableone,word) end
È identica per entrambe le tabelle, ad eccezione, ovviamente, i singoli nomi di tabella. Le tabelle vengono compilate correttamente e vengono visualizzate correttamente quando le stampo. Qui ci sono due tavoli per il bene di questa domanda:
tableone = {}
tabletwo = {}
for i=1,4 do table.insert(tableone, i) end
for i=1,4 do table.insert(tabletwo, i) end
Ovviamente, queste due tabelle stanno per essere uguali tra loro. La funzione che ho scritto per confrontare le tabelle di indice è la seguente:
function comparetables(t1, t2)
matchct = 0
for i=1,#t1 do
if t1[i] == t2[i] then
matchct = matchct + 1
end
if matchct == #t1 then
return true
end
end
Ho provato a fare
print(comparetables(tableone,tabletwo))
per vedere se sarà stampare "vera", ma senza fortuna. Per me, sembra che dovrebbe funzionare senza problemi. Eppure non è così. Cosa mi manca? Ho provato a cercare qualcosa come una funzione table.compare che qualcuno potrebbe aver già scritto, ma nessuna fortuna nel trovarne una. Grazie per eventuali suggerimenti!
Ulteriori informazioni:
La ragione per cui sto confrontando le tabelle è per un gioco mastermaind-tipo. Ciò significa che le seguenti tre regole devono essere applicate quando si confrontano le tabelle. La funzione che ho creato è stata solo iniziare, pensando di poter lavorare da lì.
- Confrontando i tavoli, se i numeri corrispondono, CCOUNT aumenta di 1.
- Quando si confrontano le tabelle, se il valore esiste in una posizione di indice diverso, incremento Pcount da 1
Ad esempio , con una tabella di valori {1, 3, 3, 4} e un'ipotesi di {4, 4, 3, 1}, restituirà Pcount di 2 (il 4 e il 1) e un Conto 1 (il tre nella terza posizione). Penso che una delle parti più difficili sarà ottenere il confronto per riconoscere che il secondo 4 nell'ipotesi non dovrebbe affatto incrementare il Pcount.
Da dove viene il "sé"? Ho appena provato e ha restituito un errore dicendo che stava tentando di indicizzare auto locale, un valore nullo. Edit: Oh, aspetta, lo vedo nel primo blocco. Strano che restituisca un errore, però. – Josh
@Josh dove vedi un errore? (Ho provato questo sulla mia copia di lua e funziona senza errori). –
(\ n sta solo indicando la nuova riga poiché i commenti non consentono le multilinea) Usando wxLuaeditor ed entrambe le sezioni di codice sopra, restituisce questo: Stato 1 è: \ n Errore: Lua: Errore durante l'esecuzione di chunk \ n [stringa "* untitled.lua"]: 18: tentativo di indicizzare 'self' locale (valore nullo) \ n trace traceback: \ n [stringa "* untitled.lua"]: 18: in funzione 'print' \ n [stringa "* untitled.lua"]: 37: nel blocco principale – Josh