LeekScript 2

LeekScript 2

LeekScript 2 (dawniej LeekScript 1.1) to druga wersja LeekScript, języka Leek Wars, wydana 28 lutego 2021 r. Ma na celu oczyszczenie języka, wprowadzenie poprawek i dodanie zorientowanego obiektu programowania.

Prezentacja

Ponieważ w sposobie działania języka wprowadzane są głębokie modyfikacje, jest to wersja bez wstecznej kompatybilności, którą użytkownik aktywuje ręcznie w edytorze.

Wersja 2 jest krokiem w kierunku przyszłej wersji ogłoszonej w 2016 roku. W związku z tym w wersji 2 dostępnych jest wiele planowanych funkcji, co pozwala na stopniowe rozwijanie języka, co jest bardzo korzystne dla kodowania złożonej sztucznej inteligencji.

Dedykowana strona pomocy dotycząca migracji jest dostępna tutaj: LeekScript 1 to 2 Migration.

Nowości

Programowanie obiektowe

Dodano programowanie obiektowe: klasy i obiekty. Zobacz stronę Klasy i obiekty, aby zapoznać się z całą dokumentacją tego dodatku.

Słowa kluczowe nowy, klasa, rozszerzenia, statyczny, publiczny, chronione, prywatne, implementy, interfejs, konstruktor, to , super i instanceof są zarezerwowane dla OOP i dlatego nie są już dostępne dla nazw zmiennych lub funkcji.

Przekaż przez referencję

Wartości inne niż prymitywne, tj. tablice i obiekty, są domyślnie przekazywane przez referencję. Wartości pierwotne (liczba, wartość logiczna, łańcuch) są zawsze kopiowane.

Składnia @ nie jest już używana i dlatego wszędzie jest przestarzała. W LeekScript 2 nie jest możliwe tworzenie odniesień do wartości pierwotnej.

Odwołania w tabelach

Możliwość dodawania referencji w tablicach (i obiektach), pozwalająca na tworzenie złożonych i/lub rekurencyjnych struktur przy rozsądnych kosztach.

Przykłady struktur danych trudnych do uzyskania w 1 i bardzo łatwych w 2:

funkcja klonowania().

Dodano funkcję clone(value, [level]), aby dokładnie sklonować wartość:

Wiele błędów

Kilka błędów semantycznych zwróciło edytor zamiast jednego (dostępne również w LS 1).

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

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

Pełny stos wywołań

Pełny stos wywołań jest wyświetlany pod każdym błędem, zamiast tylko jednej linii wcześniej (dostępne również w LS 1).

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

Średniki nie są wymagane

Ale oczywiście zawsze można z niego skorzystać. (dostępne również w wersji LS 1)

Usunięto limit rozmiaru pamięci RAM

Limit rozmiaru macierzy został usunięty, a koszt operacji jest wystarczający, aby ograniczyć ich użycie.

Poprawki

filtr tablicy

Naprawiono arrayFilter: tablica jest poprawnie ponownie indeksowana bez pozostawiania wartości pustych.

Łańcuch "\\\\"

Naprawiono zmianę znaczenia ciągu "\\", który poprawnie wyświetla pojedynczy \ zamiast dwóch.

Deklaracja globali

Napraw globalne deklaracje w wielu plikach.

Operator ^=

Naprawiono operator ^= zamieniający się w binarne OR zamiast potęgi.

Funkcja odtwarzania losowego

Funkcja tasowania bierze pod uwagę generator liczb losowych podłączony do ziarna bojowego i dlatego jest deterministyczna dla tego samego ziarna. Może to powodować różnice między dwiema walkami wygenerowanymi z tego samego materiału siewnego, co wpływa na testy.