Contenido del curso
Your first Sway project
Types and Standard Library
Writing your contract
- 8

Desarrollo de Contratos Inteligentes en Sway: Mercado Online Intermedio
16:08 min - 9

Implementación de funciones en contratos inteligentes Sway
09:49 min - 10

Implementación de la Función buyItem en Sway para Compra de Artículos
15:47 min - 11

Funciones de Propietario en Contratos Inteligentes Sway
09:06 min - 12

Función get_item en tu contrato Sway
Viendo ahora
Deploying your contract
Frontend
Función get_item en tu contrato Sway
Resumen
Si llegaste hasta acá, ya tienes casi todo un smart contract escrito en Sway con funciones complejas, transferencias de tokens y control de acceso. Ahora toca cerrar con la función get_item, una función read-only que recibe un item ID y devuelve el struct completo con toda la información de ese ítem. Es corta, directa y deja el contrato listo para compilar y desplegar.
¿Qué hace la función get_item en un smart contract de Sway?
Esta función te permite consultar cualquier ítem registrado en tu contrato usando su identificador único. No modifica estado: solo lee.
La firma de la función declara tres cosas que conviene mirar con calma:
- Storage access de solo lectura: indicas que la función accede al storage únicamente para leer, no para escribir.
- Argumento item_id de tipo U64: el identificador numérico del ítem que quieres recuperar.
- Return type item: devuelves el struct completo con todos los campos del ítem.
¿Qué es una función read-only en Sway? Es una función que accede al storage solo para consultar datos, sin modificarlos. Se declara con un storage access de lectura y resulta más barata en gas que una función de escritura.
¿Cómo se implementa get_item en una sola línea?
La lógica interna es mínima. Llamas al storage map donde guardaste los ítems y usas su método get pasando el item_id recibido como argumento.
En la práctica, la función completa se reduce a un return storage.item_map.get(item_id). Con esa línea recuperas el struct asociado al ID y lo devuelves al usuario que hizo la consulta.
Lo interesante de este patrón es que aprovecha una estructura de datos que ya construiste en clases anteriores: el storage map que vincula cada ID con su struct. La función solo expone esa información hacia afuera.
¿Qué conceptos avanzados de Sway ya dominas en este punto?
Antes de seguir, vale la pena reconocer el terreno recorrido. Llevas escrito un contrato que combina varios elementos no triviales del lenguaje.
- Structs para agrupar datos relacionados de cada ítem.
- Storage vectors y storage maps para persistir colecciones en el contrato.
- Transferencia de tokens entre cuentas dentro de funciones del contrato.
- Base assets y sus IDs para distinguir qué activo se mueve en cada operación.
- Require statements para validar condiciones antes de ejecutar lógica crítica.
- Enums y error messages para representar estados y comunicar fallos de forma clara.
Esa combinación es la base de cualquier contrato serio: estructura de datos, persistencia, validación y manejo de errores trabajando juntas.
¿Para qué sirve un storage map en un contrato Sway? Para asociar claves con valores de forma persistente en el almacenamiento del contrato. Por ejemplo, vincular un item_id con su struct correspondiente y recuperarlo después con
get.
¿Qué función personalizada puedes agregar antes de desplegar?
Antes de pasar a la fase de build y deploy, el reto es que escribas una función propia y la sumes al contrato. No tiene que ser compleja, solo tiene que aportar algo que aún no exista.
Algunas direcciones que puedes explorar:
- Una nueva forma de registrar un ítem añadido, quizá con metadata extra.
- Una función para eliminar un ítem del registro bajo ciertas condiciones.
- Un mecanismo para rastrear el progreso de ítems vendidos, como un contador o un historial.
Después de escribirla, comparte una captura de tu código y explica en una o dos frases qué hace. Ese ejercicio fija lo aprendido mucho más que solo leer la implementación de get_item.
En la próxima sesión vamos juntos al build y deploy del contrato, con un repaso de todo lo construido. ¿Qué función personalizada se te está ocurriendo agregar? Cuéntame en los comentarios.