La destructuración es una característica de varios lenguajes de programación que permite descomponer estructuras de datos complejas (como tuplas, colecciones y objetos), y asignarlos a variables individuales.
De forma resumida, muchos lenguajes permiten componer variables en colecciones o agrupaciones. Es frecuente que en alguna ocasiones queramos “deshacer” esta composición, y crear variables individuales para cada uno de los miembros.
La destructuración permite realizar esta operación de forma concisa. Veámoslo con un ejemplo. Supongamos que tenemos una agrupación persona
, que contiene nombre
y edad
.
// composición
const persona = { nombre: "Luis", edad: 30 };
// descomposición `tradicional`
const nombre = persona.nombre;
const edad = persona.edad;
// con destructuración
const { nombre, edad } = persona;
Destructurar persona
nos permite crear dos nuevas variables nombre
y edad
, de forma más sencilla que con la asignación de variables “tradicional.”
Ejemplo de destructuración en distintos lenguajes
No todos los lenguajes que incorporan destructuración permiten destructurar todos los tipos. Pero es una tendencia que cada vez amplíen más esta funcionalidad porque, en ocasiones resulta muy cómoda.
Vamos a ver cómo distintos lenguajes incorporan el concepto de destructuración en mayor o menor medida.
En C#, las tuplas y los records pueden ser destructuradas directamente en variables individuales
var tupla = (1, "Hola", 3.5);
var (entero, saludo, numero) = tupla;
En C++ también dispone de funciones de destructuración para structs y tuplas.
struct Person {
std::string name;
int age;
};
Person person = {"John", 30};
auto [name, age] = person;
En JavaScript es el rey absoluto de la destructuración, permitiendo destructurar objetos y colecciones.
const persona = { nombre: "Luis", edad: 30 };
const { nombre, edad } = persona;
const numeros = [1, 2, 3];
const [primero, segundo, tercero] = numeros;
En Python también incorpora funciones muy potentes de destructuración de tuplas e incluso colecciones.
tupla = (1, "Hola", 3.5)
numero, saludo, decimal = tupla