7. Manejo de Arrays y Structs





Punto del Curso de Solidity: Manejo de Arrays y Structs

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
        }
        


AnteriorSiguiente

[mwai_chat]

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *