Tipos y colecciones

Objetivo de aprendizaje

  • Aplicar tipos de Lucia y estructuras de coleccion en codigo real.

Sintaxis clave

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};

Ejemplos

  • Acceso en listas: tags[0].
  • Acceso en diccionarios: user["name"].
  • Valores temporales: date(...), datetime(...).

Patrones practicos

  • Listas y diccionarios vacios con tipo explicito:
let mazo: list<Carta> = [];
let puntajes: dict<string, int> = {};
  • Reasignar vacios conserva el tipo de la variable:
mazo = [];
puntajes = {};
  • Lectura y escritura por indice:
let temp: Carta = mazo[i];
mazo[i] = mazo[j];
puntajes["ana"] = 10;
  • Metodos tipados en colecciones:
mazo.append(Carta("A"));
if (puntajes.contains_key("ana")) {
	print(puntajes.get("ana", 0));
}

Notas

  • Para tamano de colecciones usa len(x).
  • list<T> exige elementos compatibles en asignacion y append.
  • dict<K, V> valida tipo de llave y de valor.
  • Metodos comunes de list: insert, remove, removeAt, extend, first, last, is_empty, copy, clear.
  • Metodos comunes de dict: items, size, merge, put, remove, is_empty, clear.

Errores comunes

  • Asignar tipos incompatibles.
  • Usar indices o claves invalidas.
  • Llamar metodos no soportados por el tipo receptor (por ejemplo length() en list).

Practica sugerida

  • Modela un registro de estudiante con dict<string, any> y lista de notas.

Practica extendida

  • Crea un mezclador de mazo:
  1. Define list<Carta>.
  2. Usa for y random(0, n - 1).
  3. Intercambia elementos con asignacion por indice.

Relacionados

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