Lição: 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:
- Arrays de Tamanho Fixo: O tamanho é determinado em tempo de compilação e não pode ser alterado.
- 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.