LeekScript 2

LeekScript 2

LeekScript 2 (anteriormente LeekScript 1.1) é a segunda versão do LeekScript, a linguagem de Leek Wars, lançada em 28 de fevereiro de 2021. Tem como objetivo limpar a linguagem, fazer correções e adicionar objeto de programação orientado.

Apresentação

Como são feitas profundas modificações no funcionamento da linguagem, esta é uma versão sem compatibilidade com versões anteriores que é ativada manualmente pelo usuário no editor.

A versão 2 é um passo em direção à futura versão anunciada em 2016. Muitas funcionalidades planejadas estão, portanto, presentes na versão 2, permitindo que a linguagem seja avançada gradativamente, sendo estas funcionalidades muito benéficas para a codificação de IA complexa.

Uma página de ajuda dedicada à migração está disponível aqui: LeekScript 1 to 2 Migration.

Novas chegadas

Programação Orientada a Objetos

Adicionado programação orientada a objetos: classes e objetos. Veja a página Classes and Objects para toda a documentação sobre esta adição.

As palavras-chave new, class, extends, static, public, protegido, privado, implementos, interface, construtor, este , super e instanceof são reservados para OOP e, portanto, não estão mais disponíveis para nomes de variáveis ou funções.

Passar por referência

Valores não primitivos, ou seja, arrays e objetos são passados por referência por padrão. Valores primitivos (número, booleano, string) são sempre copiados.

A sintaxe @ não é mais usada e, portanto, está obsoleta em todos os lugares. Não é possível no LeekScript 2 criar referências a um valor primitivo.

Referências em tabelas

Capacidade de adicionar referências em arrays (e objetos), permitindo criar estruturas complexas e/ou recursivas a um custo razoável.

Exemplos de estruturas de dados difíceis de conseguir em 1 e muito fáceis em 2:

função clone()

Adicionada uma função clone(value, [level]) para clonar um valor com precisão:

Vários erros

Vários erros semânticos retornaram no editor ao invés de apenas um (também disponível no LS 1).

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

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

Pilha de chamada completa

A pilha de chamadas completa é exibida abaixo de cada erro, em vez de apenas uma linha antes (também disponível em LS 1).

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

Não são necessários pontos e vírgulas

Mas é sempre possível usá-lo, é claro. (também disponível em LS 1)

Limite de tamanho de RAM removido

O limite de tamanho do array é removido, sendo o custo em operações suficiente para limitar seu uso.

Conserta

arrayFilter

ArrayFilter fixo: o array é reindexado corretamente sem deixar valores nulos.

Corrente "\\\\"

Corrigido o escape da string "\\" que exibe corretamente um único \ em vez de dois.

Declaração de globais

Correção em declarações globais em vários arquivos.

Operador ^=

Corrigido o operador ^= tornando-se o OR binário em vez da potência.

Função aleatória

A função shuffle leva em consideração o gerador de números aleatórios conectado à semente de combate e, portanto, é determinística para a mesma semente. Pode causar variações entre duas lutas geradas a partir da mesma semente, o que impacta os testes.