SwiftHTML & CSSSolidityDesenvolvimento de JogosSolana/Rust
14.11.2024

Aula 029: Arrays em Solidity

Nesta aula, exploraremos os arrays em Solidity, um aspecto fundamental da linguagem de programação da blockchain Ethereum. Arrays são coleções de elementos, e podem ter tamanho fixo ou dinâmico. Discutiremos sua declaração, uso e algumas funções comuns para manipulá-los.

Tipos de Arrays

Em Solidity, existem principalmente dois tipos de arrays:

  1. Arrays de Tamanho Fixo: O tamanho é determinado em tempo de compilação e não pode ser alterado.
  2. Arrays de Tamanho Dinâmico: O tamanho pode ser alterado em tempo de execução, permitindo uma gestão de dados mais flexível.

Declaração de Arrays

Você pode declarar arrays em Solidity de duas maneiras: tamanho fixo e tamanho dinâmico.

Array de Tamanho Fixo

// Array de tamanho fixo com 5 elementos
uint[5] public fixedArray;

Array de Tamanho Dinâmico

// Array de tamanho dinâmico
uint[] public dynamicArray;

Inicializando Arrays

Você pode inicializar arrays no momento da declaração, especialmente para arrays de tamanho fixo.

Inicialização de Array de Tamanho Fixo

uint[3] public fixedArray = [1, 2, 3];

Inicialização de Array de Tamanho Dinâmico

Arrays dinâmicos devem ser inicializados usando uma função ou construtor.

uint[] public dynamicArray;

function initializeDynamicArray() public {
    dynamicArray.push(10);
    dynamicArray.push(20);
}

Acessando Elementos de um Array

Os elementos de um array podem ser acessados usando seu índice. Lembre-se de que o índice começa em 0.

function getFirstElement() public view returns (uint) {
    return fixedArray[0]; // Retorna o primeiro elemento
}

Modificando Elementos de um Array

Você pode atualizar um elemento do array referenciando seu índice.

function updateFixedArray(uint index, uint value) public {
    require(index < fixedArray.length, "Índice fora dos limites");
    fixedArray[index] = value; // Atualiza o elemento no índice especificado
}

Adicionando e Removendo Elementos em Arrays Dinâmicos

Arrays dinâmicos oferecem funções para adicionar e remover elementos.

Adicionando Elementos

Use a função push para adicionar elementos a um array dinâmico.

function addElement(uint value) public {
    dynamicArray.push(value); // Adiciona um novo elemento ao final do array
}

Removendo Elementos

Você pode remover o último elemento usando a função pop.

function removeLastElement() public {
    dynamicArray.pop(); // Remove o último elemento do array
}

Propriedade Length dos Arrays

Você pode verificar o comprimento de um array usando a propriedade length.

function getDynamicArrayLength() public view returns (uint) {
    return dynamicArray.length; // Retorna o comprimento do array dinâmico
}

Exemplo de Contrato

Aqui está um exemplo completo de um contrato que utiliza tanto arrays de tamanho fixo quanto dinâmico.

pragma solidity ^0.8.0;

contract ArrayExample {
    uint[3] public fixedArray = [1, 2, 3];
    uint[] public dynamicArray;

    function addToFixedArray(uint index, uint value) public {
        require(index < fixedArray.length, "Índice fora dos limites");
        fixedArray[index] = value;
    }

    function addToDynamicArray(uint value) public {
        dynamicArray.push(value);
    }

    function removeLastFromDynamicArray() public {
        require(dynamicArray.length > 0, "Array está vazio");
        dynamicArray.pop();
    }

    function getFixedArrayElement(uint index) public view returns (uint) {
        require(index < fixedArray.length, "Índice fora dos limites");
        return fixedArray[index];
    }

    function getDynamicArrayLength() public view returns (uint) {
        return dynamicArray.length;
    }
}

Conclusão

Arrays são um recurso poderoso em Solidity que permitem gerenciar coleções de dados de forma eficiente. Seja usando arrays de tamanho fixo ou dinâmico, entender como manipular essas estruturas de dados é fundamental para o desenvolvimento eficaz de contratos inteligentes. Nesta aula, abordamos a declaração, inicialização, acesso a elementos e modificação de arrays. Pratique utilizando arrays em seus contratos para se tornar proficiente na gestão de coleções de dados na blockchain Ethereum.

Video

Did you like this article? Rate it from 1 to 5:

Thank you for voting!