Manejo de Arrays y Structs en Solidity
En este punto del curso aprenderemos cómo manejar arrays y structs en Solidity, lo cual es esencial para gestionar colecciones de datos y estructuras personalizadas en nuestros contratos inteligentes.
Arrays en Solidity
En Solidity, los arrays pueden ser de tamaño fijo o dinámico. Permiten almacenar secuencias de elementos del mismo tipo. Veamos cómo declarar y utilizar arrays en Solidity.
Arrays de Tamaño Fijo
Un array de tamaño fijo tiene una longitud determinada y no puede cambiar después de su declaración.
// Declaración de un array de tamaño fijo de 5 elementos uint[5] public fixedArray function setFixedArray() public { fixedArray[0] = 1 fixedArray[1] = 2 fixedArray[2] = 3 fixedArray[3] = 4 fixedArray[4] = 5 } function getFixedArray() public view returns(uint[5] memory) { return fixedArray }
Arrays Dinámicos
Un array dinámico puede cambiar de tamaño durante la ejecución del contrato.
// Declaración de un array dinámico uint[] public dynamicArray function addToArray(uint _value) public { dynamicArray.push(_value) // Agrega un elemento al final del array } function getArrayLength() public view returns(uint) { return dynamicArray.length // Devuelve la longitud del array } function getArrayElement(uint _index) public view returns(uint) { return dynamicArray[_index] // Devuelve el elemento en el índice especificado }
Structs en Solidity
Un struct es una estructura de datos personalizada que permite agrupar diferentes tipos de datos. Esto es especialmente útil para representar entidades complejas.
Definición y Uso de Structs
Veamos cómo se define y utiliza un struct en Solidity.
// Definición de un struct llamado Person struct Person { string name uint age } // Declaración de un array dinámico de Person Person[] public people function addPerson(string memory _name, uint _age) public { // Creación de una nueva persona y agregándola al array people.push(Person(_name, _age)) } function getPerson(uint _index) public view returns(string memory, uint) { Person storage person = people[_index] return (person.name, person.age) }
Arrays de Structs
En ocasiones, puedes querer mantener un array de structs para manejar múltiples instancias de la estructura de datos.
// Definición de otro struct y un array de structs struct Car { string model uint year } Car[] public cars function addCar(string memory _model, uint _year) public { // Creación de un nuevo coche y agregándola al array cars.push(Car(_model, _year)) } function getCar(uint _index) public view returns(string memory, uint) { Car storage car = cars[_index] return (car.model, car.year) } function getTotalCars() public view returns (uint) { return cars.length }
Deja una respuesta