Solidity - Отображение

Отображение - это ссылочный тип в виде массивов и структур. Ниже приведен синтаксис объявления типа отображения.

mapping(_KeyType => _ValueType)

где

  • _KeyType- может быть любым встроенным типом плюс байты и строка. Использование ссылочного типа или сложных объектов не допускается.

  • _ValueType - может быть любого типа.

Соображения

  • Отображение может иметь только тип storage и обычно используются для переменных состояния.

  • Сопоставление можно пометить как общедоступное. Solidity автоматически создает для него геттер.

пример

Попробуйте использовать следующий код, чтобы понять, как работает тип сопоставления в 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));
   }
}

Запустите указанную выше программу, следуя инструкциям в главе « Первое приложение Solidity» .

Первый клик updateBalance Нажмите кнопку, чтобы установить значение 10, затем просмотрите журналы, которые покажут декодированный вывод как -

Вывод

{
   "0": "uint256: 10"
}