LeekScript 2

#LeekScript 2

LeekScript 2 (sebelumnya LeekScript 1.1) adalah versi kedua dari LeekScript, bahasa Leek Wars, dirilis pada 28 Februari 2021. Ini bertujuan untuk membersihkan bahasa, melakukan koreksi, dan menambahkan objek pemrograman berorientasi.

Presentasi

Karena modifikasi mendalam dilakukan pada cara kerja bahasa, ini adalah versi tanpa kompatibilitas mundur yang diaktifkan secara manual oleh pengguna di editor.

Versi 2 adalah langkah menuju versi masa depan yang diumumkan pada tahun 2016. Oleh karena itu, banyak fitur yang direncanakan hadir dalam versi 2, memungkinkan bahasa untuk ditingkatkan secara bertahap, fitur ini sangat bermanfaat untuk pengkodean AI yang kompleks.

Halaman bantuan migrasi khusus tersedia di sini: LeekScript 1 to 2 Migration.

Pendatang baru

Pemrograman berorientasi objek

Menambahkan pemrograman berorientasi objek: kelas dan objek. Lihat halaman Kelas dan Objek untuk semua dokumentasi tentang penambahan ini.

Kata kunci baru, kelas, meluas, statis, publik, dilindungi, pribadi, implemen, antarmuka, konstruktor, ini , super dan instanceof dicadangkan untuk OOP dan karenanya tidak lagi tersedia untuk nama variabel atau fungsi.

Melewati referensi

Nilai non-primitif, yaitu array dan objek dilewatkan dengan referensi secara default. Nilai primitif (angka, boolean, string) selalu disalin.

Sintaks @ tidak lagi digunakan dan karenanya tidak digunakan lagi di mana-mana. Tidak mungkin di LeekScript 2 untuk membuat referensi ke nilai primitif.

Referensi dalam tabel

Kemampuan untuk menambahkan referensi dalam array (dan objek), memungkinkan untuk membuat struktur yang kompleks dan/atau rekursif dengan biaya yang masuk akal.

Contoh struktur data yang sulit dicapai dalam 1 dan sangat mudah dalam 2:

klon() fungsi

Menambahkan fungsi clone(value, [level]) untuk mengkloning nilai dengan tepat:

Banyak kesalahan

Beberapa kesalahan semantik dikembalikan di editor, bukan hanya satu (juga tersedia di LS 1).

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

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

Tumpukan panggilan penuh

Tumpukan panggilan lengkap ditampilkan di bawah setiap kesalahan, bukan hanya satu baris sebelumnya (juga tersedia di LS 1).

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

Titik koma tidak diperlukan

Tapi itu selalu mungkin untuk menggunakannya tentu saja. (juga tersedia di LS 1)

Batas ukuran RAM dihapus

Batas ukuran array dihapus, biaya dalam operasi cukup untuk membatasi penggunaannya.

Perbaikan

arrayFilter

Memperbaiki arrayFilter: array diindeks ulang dengan benar tanpa meninggalkan nilai nol.

Rantai "\\\\"

Memperbaiki pelepasan string "\\" yang dengan benar menampilkan satu \ alih-alih dua.

Deklarasi global

Perbaiki deklarasi global di beberapa file.

Operator ^=

Memperbaiki operator ^= menjadi biner OR alih-alih kekuatan.

Fungsi acak

Fungsi acak memperhitungkan generator angka acak yang terhubung ke benih pertempuran dan karenanya bersifat deterministik untuk benih yang sama. Ini dapat menyebabkan variasi antara dua pertarungan yang dihasilkan dari benih yang sama, yang berdampak pada pengujian.