Tipos de Datos Avanzados: Structs, Enums y Mapas de Almacenamiento

Clase 6 de 16Curso de Programación de Contratos Inteligentes con Sway

Resumen

¿Qué es un Struct en lenguajes de programación?

Un struct es una forma avanzada y poderosa de agrupar tipos de datos en programación. Si estás familiarizado con lenguajes orientados a objetos como JavaScript o Java, esto te resultará fácil de entender. Un struct actúa similar a un objeto, permitiéndote almacenar múltiples propiedades relacionadas bajo un mismo techo. Por ejemplo, si tienes un struct llamado Auto, podrías tener campos como color, número de ruedas y año, todos describiendo el mismo objeto: un auto. Esta práctica resulta ideal para mantener unidas propiedades que pertenecen a un mismo concepto y son útiles en contratiempos más complejos.

struct Auto {
    color: String,
    num_ruedas: U64,
    anio: U64,
}

¿Qué son los Enums y cómo se usan?

Los enums, o enumeraciones, constituyen otro tipo de agrupación de datos, conocidos también como subtipos. Un enum puede ser una de varias variantes predefinidas, lo que otorga control respecto a qué valores puede adoptar una variable en tu programa. Imagina que necesitas definir una variable Color y deseas restringir sus valores a un conjunto específico. Con un enum, puedes definir esos colores permitidos, evitando que el usuario introduzca valores inválidos.

enum Color {
    Azul,
    Verde,
    Rojo,
    Plata,
    Gris,
}

Esto permite asegurarte de que sólo valores válidos para Color sean usados, incrementando la robustez de tu código.

¿Qué es un Mapa de Almacenamiento?

Un mapa de almacenamiento es un tipo especial diseñado para almacenar pares de valores clave en un bloque de almacenamiento. Es útil cuando es necesario manejar estructuras de datos más complejas, similares a los diccionarios en Python o a las tablas hash. Al definir un mapa de almacenamiento, especificas el tipo de dato para la clave y para el valor, permitiendo una asignación eficiente y organizada.

StorageMap<Dirección, U64> mapa;

¿Cómo funciona un Mapa de Almacenamiento?

Los mapas de almacenamiento funcionan asociando una clave con un valor. La clave puede ser un identificador, mientras que el valor puede ser un tipo de dato complejo como un struct. Esta estructura es ideal para gestionar datos organizados y permite gestionar grandes cantidades de información de forma eficiente.

¿Qué es un StorageVec y cómo se utiliza?

Un StorageVec es una herramienta que te permite almacenar múltiples valores del mismo tipo en un único tipo de dato, donde cada valor tiene un índice. Se asemeja a un array, pero ofrece funciones avanzadas como la capacidad de añadir elementos dinámicamente, lo cual enriquece tus posibilidades de manipulación durante el runtime de tu programa.

StorageVec<U64> v;

¿Cómo añades elementos a un StorageVec?

Usar el método .push es tan intuitivo como en los arrays de JavaScript. Puedes agregar fácilmente elementos a un StorageVec accediendo al vector con su nombre y colocando el método .push, seguido del valor que deseas añadir.

storage.v.push(42);

¿Cómo lees elementos de un StorageVec?

Para leer valores almacenados en un StorageVec, se emplea el método get acompañado del índice que deseas acceder. Esto resulta útil cuando necesitas extraer y usar valores previamente almacenados.

let tercero = storage.v.get(2);

Esta estructura no solo mantiene organizados los datos de forma eficiente, sino que también mejora significativamente la gestión y manipulación de datos dentro de programas complejos.

En esta clase, aprendimos a trabajar con estructuras de datos avanzadas, como structs, enums, mapas de almacenamiento y StorageVecs. Si alguna de estas herramientas era nueva para ti, ¿cuál dirías que sientes más curiosidad por explorar en mayor profundidad? Recuerda que cada uno de estos tipos ofrece una solución distinta y efectiva frente a desafíos comunes en programación. ¡Sigue adelante y continúa descubriendo todo lo que puedes lograr en este fascinante mundo de la codificación!