Prüfen, ob array bestimmten Wert enthält
Habe ich dieses array mit einigen Werten (int), und ich möchte, um zu überprüfen, ob ein Wert, der vom Benutzer gegeben wird, die gleich einem Wert in die Zeichenkette. Wenn Sie es ist, die Ausgabe einer Meldung wie "haben Sie Ihre Zeichenfolge".
Beispiel der Liste:
local op = {
{19},
{18},
{17}
}
if 13 == (the values from that array) then
message
else
other message
Wie kann das getan werden?
- Haben Sie die Absicht für
op
ein array-wie die Tabelle mit array-ähnlichen Tabellen mit zahlen, die bei jedem Ihrer ersten Indizes, oder sind Sie auf der Suche nachop = {19, 18, 17}
?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Lua nicht-strict-arrays wie in anderen Sprachen - es hat nur hash-Tabellen. Tabellen in Lua sind als array-wie, wenn Ihre Indizes, sind numerische und dicht gepackt, so dass keine Lücken. Die Indizes, die in der folgenden Tabelle wäre
1, 2, 3, 4
.Wenn Sie ein array-wie Tabelle können Sie überprüfen, ob es enthält einen bestimmten Wert von looping durch den Tisch. Sie können eine
for..in
Schleife, und dieipairs
Funktion zum erstellen einer generischen Funktion.Wir können das oben in einem
if
bedingte, um unser Ergebnis.Wiederholen, mein Kommentar oben, Ihre aktuellen Beispiel-code kein array-wie Tabelle von zahlen. Stattdessen ist es ein array-wie Tabelle mit array-ähnlichen Tabellen, die zahlen haben in Ihren jeweils ersten Indizes. Sie würden, müssen Sie die Funktion über die Arbeit mit den angezeigten code ein, wodurch es weniger generisch.
Lua ist nicht eine sehr große oder komplexe Sprache und Ihre syntax ist sehr abgeholzt. Wenn die oben genannten Konzepte sind völlig Fremd für Sie, müssen Sie einige Zeit damit verbringen, Lesen echte Literatur, nicht nur zu kopieren Beispiele. Ich würde Ihnen raten, Lesen Programmieren in Lua um sicherzustellen, dass Sie verstehen, die Grundlagen. Dies ist die erste Ausgabe, richtet sich an die Lua 5.1.
Könnte man auch die Prüfung, ob der Wert vorhanden ist in deinem array effizienter, indem Sie Ihre Werte auf dem index, und weisen Sie den Wert true.
Dann, wenn Sie überprüfen Sie Ihre Tabelle, die Sie gerade prüfen, ob ein Wert vorhanden ist, der index, die, um Zeit zu sparen, weil Sie nicht brauchen, um durch zu gehen die ganze Tabelle in die worst-case-Szenario...
Hier ist das Beispiel, das ich im Sinn hatte:
op[19] == true
. Das kann nurop[19]
Den Tisch
op
deine Frage ist eigentlich ein array (Tabelle) des arrays.Zu prüfen, ob ein Wert vorhanden ist in einer Tabelle:
for k,v in pairs(table) do if k == val then return true end return false