Lição: 030: Arrays de Tamanho Fixo vs Arrays Dinâmicos em Solidity
Em Solidity, a linguagem de programação utilizada para escrever contratos inteligentes na blockchain Ethereum, os arrays são uma estrutura de dados fundamental que nos permitem armazenar coleções de dados. Compreender a diferença entre arrays de tamanho fixo e arrays dinâmicos é essencial para um desenvolvimento eficaz de contratos inteligentes. Nesta aula, exploraremos ambos os tipos de arrays, seu uso e forneceremos exemplos para ilustrar como funcionam.
Arrays de Tamanho Fixo
Um array de tamanho fixo possui um tamanho predeterminado que é definido no momento da declaração. Uma vez definido, o tamanho deste array não pode ser alterado. Ele é alocado na memória ou no armazenamento de acordo com seu tipo.
Sintaxe
A sintaxe para declarar um array de tamanho fixo em Solidity é a seguinte:
tipo[tamanhoDoArray] nomeDoArray;
Exemplo
Aqui está um exemplo simples de um array de tamanho fixo que armazena as idades de três indivíduos:
pragma solidity ^0.8.0;
contract ExemploArrayTamanhoFixo {
// Declarar um array de tamanho fixo com 3 elementos do tipo uint
uint[3] public idades;
// Construtor para inicializar as idades
constructor(uint idade1, uint idade2, uint idade3) {
idades[0] = idade1;
idades[1] = idade2;
idades[2] = idade3;
}
// Função para recuperar a idade em um índice específico
function pegarIdade(uint indice) public view returns (uint) {
require(indice < 3, "Índice fora dos limites");
return idades[indice];
}
}
Pontos-Chave
- Arrays de tamanho fixo são definidos com um tamanho específico.
- O acesso aos elementos é feito através de seus índices.
- O tamanho não pode ser modificado após a declaração.
Arrays Dinâmicos
Os arrays dinâmicos, por outro lado, podem mudar de tamanho durante a execução de um contrato. Eles são mais flexíveis em comparação aos arrays de tamanho fixo, permitindo operações como adicionar e remover elementos.
Sintaxe
A sintaxe para declarar um array dinâmico é a seguinte:
tipo[] nomeDoArray;
Exemplo
Abaixo está um exemplo de um array dinâmico que permite aos usuários adicionar e recuperar números:
pragma solidity ^0.8.0;
contract ExemploArrayDinamico {
// Declarar um array dinâmico do tipo uint
uint[] public numeros;
// Função para adicionar um novo número ao array
function adicionarNumero(uint numero) public {
numeros.push(numero);
}
// Função para recuperar o número em um índice específico
function pegarNumero(uint indice) public view returns (uint) {
require(indice < numeros.length, "Índice fora dos limites");
return numeros[indice];
}
// Função para obter o tamanho do array
function contarNumeros() public view returns (uint) {
return numeros.length;
}
}
Pontos-Chave
- Arrays dinâmicos podem aumentar ou diminuir de tamanho.
- Elementos são adicionados usando a função
push()
. - O comprimento do array pode ser verificado usando a propriedade
.length
.
Conclusão
Em resumo, entender as diferenças entre arrays de tamanho fixo e arrays dinâmicos em Solidity é crucial para desenvolver contratos inteligentes eficientes. Arrays de tamanho fixo oferecem uma maneira direta de armazenar um número fixo de elementos, enquanto arrays dinâmicos oferecem flexibilidade para cenários onde o número de elementos pode mudar ao longo do tempo. Ambos os tipos de arrays têm seus casos de uso, e dominá-los permitirá que você escreva contratos inteligentes mais robustos e versáteis.