Exercício 6

Exercício: Arrays Dinâmicos em Solidity

Neste exercício utilizaremos o conceito de arrays dinâmicos para armazenar uma lista de dados que iremos acumulando. Também veremos como modificar os valores de posições específicas do array e como recuperar a lista completa de valores do array.

Passos a seguir:

  1. Programe o contrato no Remix,

  2. Desimplante-o em uma rede de teste da Ethereum como Sepolia,

  3. Publique e verifique o contrato utilizando um explorador de blocos,

  4. Interaja com o contrato através do explorador de blocos adicionando pelo menos quatro valores ao array storedInfos,

  5. Modifique posições específicas de storedInfos usando a função updateInfo,

  6. Leia o valor de posições específicas de storedInfos usando a função getOneInfo.

Código Solidity

// SPDX-License-Identifier: MIT
pragma solidity 0.8.19;

/// @title Conceitos: array = lista de informações armazenadas
/// @author Solange Gueiros
contract FirsArray {
    string[] private storedInfos;

    /**
    * Grava novos valores no array usando push()
    * index devolve a posição na qual o valor foi gravado
    */
    function addInfo(string memory myInfo) external returns (uint index) {
        storedInfos.push(myInfo);
        index = storedInfos.length - 1;
    }

    /**
    * Modifica o valor da posição index do array com um novo valor
    * Verifica se a posição é válida, senão devolve um erro
    */
    function updateInfo(uint index, string memory newInfo) external {
        require (index < storedInfos.length, "index inválido");
        storedInfos[index] = newInfo;
    }

    /**
    * Devolve o valor armazenado na posição index do array
    * Verifica se a posição é válida, senão devolve um erro
    */
    function getOneInfo(uint index) external view returns (string memory) {
        require (index < storedInfos.length, "index inválido");
        return storedInfos[index];
    }

    // Devolve todos os valores contidos no array
    function listAllInfo() external view returns (string[] memory) {
        return storedInfos;
    } 
}

Last updated