Solidność - mapowanie
Mapowanie jest typem referencyjnym, takim jak tablice i struktury. Poniżej znajduje się składnia deklarowania typu odwzorowania.
mapping(_KeyType => _ValueType)
Gdzie
_KeyType- może być dowolnym typem wbudowanym plus bajty i ciąg. Nie są dozwolone żadne typy referencyjne ani złożone obiekty.
_ValueType - może być dowolnego typu.
Rozważania
Mapowanie może mieć tylko typ storage i są zwykle używane dla zmiennych stanu.
Mapowanie można oznaczyć jako publiczne. Solidność automatycznie tworzy dla niej getter.
Przykład
Wypróbuj poniższy kod, aby zrozumieć, jak działa typ mapowania w 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));
}
}
Uruchom powyższy program, wykonując kroki opisane w rozdziale Solidity First Application .
Pierwsze kliknięcie updateBalance Przycisk ustawiania wartości na 10, a następnie zajrzyj do dzienników, które pokażą zdekodowane dane wyjściowe jako -
Wynik
{
"0": "uint256: 10"
}