Entwicklung / ROBLOX
Numerische for-Schleifen in Luau: drei Stationen prüfen
Eine begrenzte Übungscharge erklärt Reihenfolge, Durchlaufzahl, Rückwärtslauf und den Unterschied zwischen Überspringen und Abbrechen. Die eigenständigen Beispiele wurden mit Luau ausgeführt; veröffentlichte Spiele wurden nicht verändert.
Die Charge zuerst festlegen #
Eine Werkstatt möchte vor einer Schicht drei nummerierte Stationen prüfen. Für die Übung genügen die Nummern 1, 2 und 3. Roblox-Objekte, verbundene Spieler und Belohnungen werden nicht benötigt. Notieren Sie vor dem Programmieren das gewünschte Ergebnis: Jede Nummer erscheint genau einmal, insgesamt werden drei Aktionen abgeschlossen. Diese Erwartung macht einen Grenzfehler sichtbar, bevor weitere Spiellogik hinzukommt.
Die Stationsnummer ist hier ein Zählerwert, kein Objektname und keine Spielerkennung. In einem echten Projekt muss die Verbindung zu einem überprüften Objekt gesondert hergestellt werden. Die Übung behandelt ausschließlich Wiederholungen. Eine passende Ausgabe bestätigt weder eine korrekt konfigurierte Szene noch gespeicherten Fortschritt oder ein abgeschlossenes Spielziel.
Drei Aktionen ausführen #
Das erste eigenständige Beispiel verwendet numerisches for von 1 bis einschließlich 3. Nach jeder Aktion erhöht es processed. Erwartet werden Station 1, Station 2, Station 3 und abschließend Processed 3. print trennt seine Argumente in der Ausgabe; prüfen Sie Werte und Reihenfolge. Führen Sie zunächst nur dieses Beispiel aus, damit ältere Meldungen das Ergebnis nicht verdecken.
Lesen Sie alle drei Stationsnummern und nicht nur den Endstand. Auch fehlerhafter Code könnte drei Aktionen zählen, dabei aber eine Station doppelt bearbeiten und eine andere auslassen. processed kontrolliert lediglich die Anzahl abgeschlossener Aktionen. Der Zähler station gehört zum Schleifenrumpf; verlassen Sie sich nach end nicht auf diese lokale Variable, sondern speichern Sie ein benötigtes Ergebnis ausdrücklich separat.
local processed = 0
for station = 1, 3 do
print("Station", station)
processed += 1
end
print("Processed", processed)Beide Grenzen kontrollieren #
In dieser Charge gehören 1 und 3 dazu. Deshalb entstehen drei Durchläufe und nicht zwei. Wer nur Endwert minus Startwert berechnet, vergisst leicht die erste Position. Bei aufeinanderfolgenden ganzen Zahlen mit Schritt eins und passender Richtung beträgt die Anzahl Endwert minus Startwert plus eins. Prüfen Sie diese Rechnung zuerst mit einer kleinen Charge, bevor Sie größere Bereiche einsetzen.
Zwei Grenzfälle helfen zusätzlich: Von 2 bis 2 mit positivem Schritt entsteht genau eine Aktion. Von 4 bis 3 mit positivem Schritt entsteht keine. Null kann somit richtig sein und bedeutet nicht automatisch, dass print defekt ist. War eine nichtleere Charge geplant, prüfen Sie Eingabegrenzen und Richtung; erhöhen Sie den Endwert nicht willkürlich, um das Symptom zu verstecken.
Rückwärts prüfen #
Das zweite unabhängige Beispiel beginnt bei 3, endet bei 1 und verwendet ausdrücklich den Schritt -1. Die erwartete Folge lautet 3, 2, 1, danach Processed 3. Stellen Sie sich eine Übungsprozedur vor, die Stationen beim Schließen in umgekehrter Reihenfolge betrachtet. Mit dem gewöhnlichen positiven Schritt wäre derselbe Bereich von 3 bis 1 leer.
Vergleichen Sie beide Ausgaben nebeneinander. Die Anzahl stimmt überein, die Reihenfolge unterscheidet sich jedoch wesentlich. Schreiben Sie die Richtung in den Schleifenkopf, statt den Zähler im Rumpf selbst zu verändern. Für diese Einführung genügt ein kleiner, verständlicher, ganzzahliger Schritt ungleich null. Bruchwerte, riesige Bereiche und externe Eingaben benötigen zusätzliche Prüfungen, die dieses Beispiel nicht ersetzt.
local processed = 0
for station = 3, 1, -1 do
print("Station", station)
processed += 1
end
print("Processed", processed)continue und break unterscheiden #
Soll Station 2 vorübergehend ausgelassen werden, springt continue innerhalb der passenden Bedingung zum nächsten Durchlauf. Bei 1–3 bleiben als bearbeitete Nummern 1 und 3. Erhöhen Sie processed hinter der Auslassbedingung, wenn abgeschlossene Aktionen gezählt werden. Eine Erhöhung vor continue zählt stattdessen besuchte Nummern: eine andere Messgröße trotz möglicherweise identischem Variablennamen.
Soll die ganze Charge beendet werden, verlässt break die nächstgelegene Schleife. Ein Abbruch vor der Bearbeitung von Station 2 lässt nur die Aktion für Station 1 zu; Station 3 wird nicht erreicht. Bei verschachtelten Schleifen ist diese Begrenzung wichtig. Beschreiben Sie break nicht als Abschalten aller Skripte oder des Servers, denn das wäre ein anderer Wirkungsbereich.
Eine Ergebnistabelle vorbereiten #
Notieren Sie vier Fälle: Vorwärts 1–3 ergibt drei Aktionen, gleiche Grenzen 2–2 ergeben eine, 4–3 mit positivem Schritt ergibt null, rückwärts 3–1 mit Schritt -1 ergibt drei. Halten Sie zusätzlich die Reihenfolge der Nummern fest. So unterscheidet die Tabelle eine korrekte Folge von einem zufällig passenden Endstand des Zählers.
Prüfen Sie danach Auslassen und Abbrechen getrennt mit derselben kurzen Charge. Vermischen Sie beide Absichten nicht in einer unklaren Bedingung. Schreiben Sie die erwartete Folge vor dem Start auf und vergleichen Sie anschließend die Ausgabe. Suchen Sie bei Abweichungen die erste unerwartete Aktion; diese zeigt die Ursache oft besser als wiederholtes Lesen der letzten Summenzeile.
Auch endliche Arbeit kostet Ressourcen #
Eine endliche Schleife kann dennoch zu viel aufwendige Arbeit auf einmal ausführen. Drei ausgegebene Nummern veranschaulichen einen Zähler; eine Million erzeugte Objekte oder viele Netzwerkanfragen sind ein anderer Arbeitsumfang. Legen Sie vor einer echten Operation die erlaubte Chargengröße fest und betrachten Sie deren Einzelkosten. Übernehmen Sie eine vom Spieler gelieferte Anzahl nicht ohne Prüfung zulässiger Grenzen.
Numerisches for ist außerdem kein Zeitgeber: Ein Durchlauf entspricht keiner Sekunde. Diese Anleitung implementiert weder endloses Abfragen noch regelmäßige Belohnungen oder Netzwerksynchronisierung. Ein echtes System benötigt eigene Entscheidungen zu Zeitplanung, Ausführungsort und Fehlerbehandlung. Der bestandene kleine Rechentest bestätigt die Schleifensteuerung, nicht die Veröffentlichungsreife eines vollständigen Spielsystems.
| Szenario | Erwartetes Ergebnis |
|---|---|
| 1 → 3, Schritt 1 | 1, 2, 3: drei |
| 2 → 2, Schritt 1 | 2: eine |
| 4 → 3, Schritt 1 | Leer: null |
| 3 → 1, Schritt -1 | 3, 2, 1: drei |
Die Prüfung weitergeben #
Eine Übergabenotiz enthält Grenzen, Schritt, erwartete Nummernfolge und beobachtete Anzahl. Fügen Sie beide unabhängigen Beispiele sowie die vier Grenzprüfungen hinzu. Erläutern Sie bei continue, ob Besuche oder abgeschlossene Aktionen gezählt werden. Nennen Sie bei break die Abbruchbedingung und den Teil der Charge, der unbearbeitet bleibt.
Die Beispiele wurden in einem eigenständigen Luau-Interpreter ausgeführt, nicht mit realen Stationen in Roblox Studio. Andere Entwickler können daraus einen Test ableiten, müssen aber ihre Objekte und Spielregeln selbst prüfen. Bewahren Sie Erwartungen direkt beim Code auf. Wenn sich die Stationsanzahl ändert, fällt dadurch ein Grenzfehler vor der Veröffentlichung eines Updates auf.
| Prüffeld | Eintrag |
|---|---|
| Grenzen | Startwert und Endwert |
| Schritt | Explizite Richtung |
| Reihenfolge | Alle Nummern der Reihe nach |
| Anzahl | Abgeschlossene Aktionen |