Mapping
WEB3DEV Team
# Mapping
Mapas são criados com a sintaxe mapping(Tipo => Valor)
.
Tipo
podem ser valores como uint
, address
, string
ou bytes
.
Valor
pode ser de qualquer tipo, incluindo outro mapping
ou uma array
.
Mappings não são iteráveis.
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;
contract Mapping {
// Mapping de address para uint
mapping(address => uint) public myMap;
function get(address _addr) public view returns (uint) {
// Mapping sempre retorna um valor.
// Se o valor nunca foi definido, vai retornar o valor padrão.
return myMap[_addr];
}
function set(address _addr, uint _i) public {
// Atualiza o valor nesse endereço
myMap[_addr] = _i;
}
function remove(address _addr) public {
// Redefine o valor para o padrão.
delete myMap[_addr];
}
}
contract MappingAninhado {
// Mapping aninhado (mapping de address para outro mapping)
mapping(address => mapping(uint => bool)) public nested;
function get(address _addr1, uint _i) public view returns (bool) {
// Você pode obter valores de um mapping aninhado
// mesmo quando ele não tiver sido inicializado.
return nested[_addr1][_i];
}
function set(
address _addr1,
uint _i,
bool _boo
) public {
nested[_addr1][_i] = _boo;
}
function remove(address _addr1, uint _i) public {
delete nested[_addr1][_i];
}
}