LeekScript 2

LeekScript 2

LeekScript 2 (tidigare LeekScript 1.1) är den andra versionen av LeekScript, språket för Leek Wars, släppt den 28 februari 2021. Syftet är att rensa upp språket, göra korrigeringar och lägga till orienterade programmeringsobjekt.

Presentation

Eftersom djupa modifieringar görs i hur språket fungerar är detta en version utan bakåtkompatibilitet som aktiveras manuellt av användaren i editorn.

Version 2 är ett steg mot den framtida version som tillkännagavs 2016. Många planerade funktioner finns därför i version 2, vilket gör att språket kan avanceras gradvis, dessa funktioner är mycket fördelaktiga för kodning av komplex AI.

En dedikerad hjälpsida för migrering finns tillgänglig här: LeekScript 1 till 2 Migration.

Nyankomna

Objektorienterad programmering

Tillagd objektorienterad programmering: klasser och objekt. Se sidan Klasser och objekt för all dokumentation om detta tillägg.

Sökorden ny, klass, extends, static, public, skyddad, privat, implementer, gränssnitt, konstruktör, detta , super och instanceof är reserverade för OOP och är därför inte längre tillgängliga för variabel- eller funktionsnamn.

Passera genom referens

Icke-primitiva värden, dvs arrayer och objekt skickas som referens som standard. Primitiva värden (nummer, boolean, sträng) kopieras alltid.

@-syntaxen används inte längre och är därför utfasad överallt. Det är inte möjligt i LeekScript 2 att skapa referenser till ett primitivt värde.

Referenser i tabeller

Möjlighet att lägga till referenser i arrayer (och objekt), vilket gör det möjligt att skapa komplexa och/eller rekursiva strukturer till en rimlig kostnad.

Exempel på datastrukturer svåra att uppnå i 1 och mycket lätta i 2:

clone() funktion

Lade till en "clone(value, [level])"-funktion för att klona ett värde exakt:

Flera fel

Flera semantiska fel returnerades i editorn istället för bara ett (finns även i LS 1).

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

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

Full samtalsstack

Hela samtalsstacken visas under varje fel, istället för bara en rad före (finns även i LS 1).

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

Semikolon krävs inte

Men det går naturligtvis alltid att använda det. (finns även i LS 1)

RAM-storleksgränsen har tagits bort

Gränsen för arraystorlek tas bort, kostnaden i operationer är tillräcklig för att begränsa deras användning.

Fixar

arrayFilter

Fixed arrayFilter: arrayen är korrekt omindexerad utan att lämna nollvärden.

Kedja "\\\\"

Fixat escape-strängen "\\" som korrekt visar en enda \ istället för två.

Globals deklaration

Fixa på globala deklarationer över flera filer.

Operatör ^=

Fixat operatorn ^= som blev den binära ELLER istället för makten.

Blandningsfunktion

Blandningsfunktionen tar hänsyn till den slumptalsgenerator som är kopplad till stridsfröet och är därför deterministisk för samma frö. Det kan orsaka variationer mellan två slagsmål genererade från samma frö, vilket påverkar testerna.