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"
}