Visao geral da linguagem Lucia

Objetivo de aprendizagem

  • Entender o mapa completo de recursos do Lucia e onde cada conceito se encaixa.

Sintaxe chave

let x: int = 10;
const title: string = "Lucia";
if (x > 0) { print(title); }

Exemplos

  • Fluxo de controle: if, else if, else, switch/case/default, while, for, do/while, for...in.
  • Declaracoes: let, const.
  • Tipos: int, float, bool, string, date, datetime, void, any.
  • Colecoes: list<T>, dict<K, V>, literais, indexacao.
  • OOP: class, extends, constructor, propriedades, metodos, this.
  • Modulos: import "./module.lucia";.
  • Expressoes: aritmeticas, logicas, comparacao, atribuicao, ternaria, coalescencia nula ??.
  • Strings: interpolacao com ${expr}.

O que geralmente passa despercebido

  • Em metodos de classe, metodos pares podem ser chamados com ou sem this:
func toString(): string {
	return obtenerNombreValor() + " " + obtenerNombrePalo();
}
  • Acesso a campos pode usar this.campo ou nome implicito quando nao ha sombra local.
  • Colecoes vazias podem adotar tipo do contexto:
let players: list<Jugador> = [];
players = [];

let scores: dict<string, int> = {};
scores = {};
  • Atribuicao indexada e valida para list/dict:
this.mazo[i] = this.mazo[j];
this.mazo[j] = temp;
  • Use len(listOrDict) para tamanho. Nao use .length().

Erros comuns

  • Misturar conceitos antes de dominar declaracoes e tipos.
  • Ignorar diagnosticos ao aprender nova sintaxe.

Trilha de aprendizado sugerida

  • Comece com examples/00_features.lucia para cobrir declaracoes, colecoes, loops e classes.
  • Continue com examples/10_inheritance_const.lucia para heranca e campos const.
  • Depois monte um mini projeto de dois arquivos com import, uma classe de modelo e um script runner.

Pratica sugerida

  • Monte um mini app com imports, classes, listas, condicionais e interpolacao.

Relacionados

  • syntax-control-flow
  • types-and-collections
  • oop-and-modules