Estructuras de datos inmutables
12 September, 2020
Las estructuras de datos inmutables forman parte de los principios de la programación funcional y nos permite deshacernos del efecto de lado (side effect).
Las estructuras de datos inmutables forman parte de los principios de la programación funcional y nos permite deshacernos del efecto de lado (side effect).
Es decir, nos evita que las variables (sobre todo las de tipo objeto) se modifiquen sin nuestro consentimiento evitándonos un montón de bugs al momento de desarrollar.
Llamamos una función que está relacionada con un objeto, y esta función modifica ese objeto.
const isca = {
nombre: 'Israel',
apellido: 'Castro',
edad: 30
}
const cumple = persona => persona.edad++
Si ejecutamos cumple(isca)
, al valor de la edad se le sumará 1 y así tantas veces como lo hagamos.
Esto se debe evitar, o al menos en la mayoría de las ocasiones queremos hacerlo.
Funciones inmutables
Para solucionarlo debemos definir una función inmutable, creando un nuevo objeto en memoria.
const isca = {
nombre: 'Israel',
apellido: 'Castro',
edad: 30
}
const cumpleInmutable = persona => ({
...persona,
edad: persona.edad + 1
})
El ...persona
desglosa cada uno de los atributos (nombre, apellido, edad, …) y lo coloca en nuevo objeto.
De esta manera el objeto original (isca) sigue teniendo 30, puesto que nunca fue modificado y el nuevo objeto tendrá 31.
El único detalle es que para poder acceder a estos cambios, se deben guardar en otra variable, de lo contrario sólo se mostrarán en pantalla y no podremos acceder a este nuevo objeto.
const isca2 = cumpleInmutable(isca)
Ahora que lo pienso 🤔, ojalá así fuera en la vida real respecto a nuestra edad.
Subscribe
Join to my newsletter and do not miss my future content.
You can unsusbcribe anytime, with no regrets 😉.