Solidez - Mapeamento

Mapeamento é um tipo de referência como matrizes e estruturas. A seguir está a sintaxe para declarar um tipo de mapeamento.

mapping(_KeyType => _ValueType)

Onde

  • _KeyType- pode ser qualquer tipo integrado mais bytes e string. Nenhum tipo de referência ou objetos complexos são permitidos.

  • _ValueType - pode ser de qualquer tipo.

Considerações

  • O mapeamento pode ter apenas o tipo de storage e geralmente são usados ​​para variáveis ​​de estado.

  • O mapeamento pode ser marcado como público. Solidity cria automaticamente getter para ele.

Exemplo

Experimente o código a seguir para entender como o tipo de mapeamento funciona no Solidity.

pragma solidity ^0.5.0;

contract LedgerBalance {
   mapping(address => uint) public balances;

   function updateBalance(uint newBalance) public {
      balances[msg.sender] = newBalance;
   }
}
contract Updater {
   function updateBalance() public returns (uint) {
      LedgerBalance ledgerBalance = new LedgerBalance();
      ledgerBalance.updateBalance(10);
      return ledgerBalance.balances(address(this));
   }
}

Execute o programa acima usando as etapas fornecidas no capítulo Aplicativo Solidity First .

Primeiro clique updateBalance Botão para definir o valor como 10, em seguida, olhe para os logs que mostrarão a saída decodificada como -

Resultado

{
   "0": "uint256: 10"
}