Saltar al contenido principal

Coincidencia de Patrones

La coincidencia de patrones te permite verificar valores contra patrones y desestructurar datos. Así es como diferentes lenguajes manejan la coincidencia de patrones.

Coincidencia de Patrones Básica​

// Switch statement
switch (value) {
case 1:
console.log("one");
break;
case 2:
case 3:
console.log("two or three");
break;
default:
console.log("other");
}

// Destructuring (object)
const { name, age } = person;
const { name: userName, ...rest } = person;

// Destructuring (array)
const [first, second, ...remaining] = arr;
const [a, , c] = [1, 2, 3]; // skip second

// Nested destructuring
const { address: { city } } = person;

// Default values
const { name = "unknown" } = person;

Puntos Clave​

  • Coincidencia exhaustiva -- Rust y Swift requieren que match/switch cubran todos los casos, previniendo errores por ramas omitidas; otros lenguajes usan default/else como comodines.
  • Soporte de desestructuración -- Rust, Swift, Python y C# ofrecen desestructuración rica de structs, tuplas y enums; C y Go tienen desestructuración mínima o inexistente.
  • Cláusulas de guarda -- Rust (if), Swift (where), Python (if), Java 21+ (when) y C# soportan guardas de patrones para lógica condicional dentro de los brazos del match.
  • Tipos de datos algebraicos -- Los enums de Rust y Swift con valores asociados permiten coincidencia de patrones en variantes que portan datos; las uniones etiquetadas de Zig ofrecen capacidades similares.