Tipos e colecoes

Objetivo de aprendizagem

  • Aplicar tipos e estruturas de colecao do Lucia em codigo real.

Sintaxe chave

let age: int = 20;
let price: float = 12.5;
let name: string = "Ana";
let active: bool = true;
let tags: list<string> = ["a", "b"];
let user: dict<string, any> = {"name": "Ana", "age": 20};

Exemplos

  • Acessar valores de lista: tags[0].
  • Acessar valores de dicionario: user["name"].
  • Usar date(2026, 3, 15) e datetime(...) para valores temporais.

Padroes praticos

  • Literais de lista e dict vazios com tipo explicito na declaracao:
let mazo: list<Carta> = [];
let puntajes: dict<string, int> = {};
  • Reatribuicao de colecoes vazias mantem o tipo da variavel:
mazo = [];
puntajes = {};
  • Leituras e escritas indexadas:
let temp: Carta = mazo[i];
mazo[i] = mazo[j];
puntajes["ana"] = 10;
  • Metodos type-safe de lista e dict:
mazo.append(Carta("A"));
if (puntajes.contains_key("ana")) {
	print(puntajes.get("ana", 0));
}

Notas

  • Use len(x) para obter tamanho da colecao.
  • list<T> exige elementos compativeis em atribuicao e append.
  • dict<K, V> valida tipos de chave e valor.
  • Metodos comuns de list: insert, remove, removeAt, extend, first, last, is_empty, copy, clear.
  • Metodos comuns de dict: items, size, merge, put, remove, is_empty, clear.

Erros comuns

  • Atribuir valores incompativeis a variaveis tipadas.
  • Usar expressoes de indice/chave invalidas.
  • Tentar chamar metodos nao suportados no tipo receptor (por exemplo length() em list).

Pratica sugerida

  • Modele um registro de estudante com dict<string, any> e uma lista de notas.

Pratica estendida

  • Monte um embaralhador de baralho:
  1. Defina list<Carta>.
  2. Use um for com random(0, n - 1).
  3. Troque elementos com atribuicao indexada.

Relacionados

  • functions-and-builtins
  • methods-and-chaining