LeekScript 2

LeekScript 2

> LeekScript

LeekScript 2 (ehemals LeekScript 1.1) ist die zweite Version von LeekScript, der Sprache von Leek Wars, die am 28. Februar 2021 veröffentlicht wurde. Es zielt darauf ab, die Sprache zu bereinigen, Korrekturen vorzunehmen und orientierte Programmierobjekte hinzuzufügen.

Präsentation

Da die Funktionsweise der Sprache tiefgreifend modifiziert wird, handelt es sich um eine Version ohne Abwärtskompatibilität, die vom Benutzer manuell im Editor aktiviert wird.

Version 2 ist ein Schritt in Richtung der 2016 angekündigten zukünftigen Version. Viele geplante Funktionen sind daher in Version 2 enthalten, sodass die Sprache schrittweise weiterentwickelt werden kann, was für die Codierung komplexer KI sehr vorteilhaft ist.

Eine spezielle Hilfeseite zur Migration ist hier verfügbar: LeekScript 1 to 2 Migration.

Neuankömmlinge

Objekt orientierte Programmierung

Objektorientierte Programmierung hinzugefügt: Klassen und Objekte. Siehe die Seite Klassen und Objekte für die gesamte Dokumentation zu dieser Ergänzung.

Die Schlüsselwörter new, class, extends, static, public, protected, private, implementiert, interface, constructor, this , super und instanceof sind für OOP reserviert und stehen daher nicht mehr für Variablen- oder Funktionsnamen zur Verfügung.

Als Referenz übergeben

Nicht primitive Werte, dh Arrays und Objekte, werden standardmäßig per Referenz übergeben. Primitive Werte (Zahl, Boolean, String) werden immer kopiert.

Die @-Syntax wird nicht mehr verwendet und ist daher überall veraltet. In LeekScript 2 ist es nicht möglich, Verweise auf einen primitiven Wert zu erstellen.

Referenzen in Tabellen

Möglichkeit, Referenzen in Arrays (und Objekten) hinzuzufügen, wodurch komplexe und/oder rekursive Strukturen zu vernünftigen Kosten erstellt werden können.

Beispiele für Datenstrukturen, die in 1 schwer und in 2 sehr einfach zu erreichen sind:

clone()-Funktion

Eine clone(value, [level])-Funktion hinzugefügt, um einen Wert genau zu klonen:

Mehrere Fehler

Im Editor wurden mehrere semantische Fehler statt nur einem zurückgegeben (auch in LS 1 verfügbar).

![](/image/encyclopedia/multiple_errors_2.png)

![](/image/encyclopedia/multiple_errors_1.png)

Volle Aufrufliste

Unter jedem Fehler wird der vollständige Aufrufstapel angezeigt, anstatt nur eine Zeile davor (auch in LS 1 verfügbar).

![](/image/encyclopedia/stacktrace.png)

Semikolons nicht erforderlich

Aber es ist natürlich immer möglich, es zu benutzen. (auch in LS 1 verfügbar)

Begrenzung der RAM-Größe entfernt

Die Begrenzung der Array-Größe wird aufgehoben, wobei die Betriebskosten ausreichen, um ihre Verwendung einzuschränken.

Korrekturen

ArrayFilter

ArrayFilter behoben: Array wird korrekt neu indiziert, ohne Nullwerte zu hinterlassen.

Kette "\\\\"

Es wurde ein Escapezeichen für die Zeichenfolge „\\““ behoben, das korrekt ein einzelnes „\“ anstelle von zwei anzeigt.

Deklaration der Globals

Fix für globale Deklarationen über mehrere Dateien hinweg.

Operator ^=

Behoben, dass der Operator „^=“ anstelle der Potenz zum binären ODER wurde.

Shuffle-Funktion

Die Shuffle-Funktion berücksichtigt den mit dem Kampfsamen verbundenen Zufallszahlengenerator und ist daher für denselben Samen deterministisch. Dies könnte zu Abweichungen zwischen zwei Kämpfen führen, die aus demselben Seed generiert wurden, was sich auf die Tests auswirkt.