programacion-destructuracion

Qué es y cómo usar la destructuración

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.

Destructurar persona nos permite crear dos nuevas variables nombre y edad, de forma más sencilla que con la asignación de variables “tradicional.”

// composición
const persona = { nombre: "Juan", edad: 30 };

// descomposición `tradicional`
const nombre = persona.nombre;
const edad = persona.edad;

// con destructuración
const { nombre, edad } = persona;

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 como 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: "Juan", 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