Solidity – 映射(mapping)类型

与数组和结构体一样,映射也是引用类型。下面是声明映射类型的语法。

mapping(_KeyType => _ValueType)
  • _KeyType – 可以是任何内置类型,或者bytes和字符串。不允许使用引用类型或复杂对象。
  • _ValueType – 可以是任何类型。

注意

  • 映射的数据位置(data location)只能是storage,通常用于状态变量。
  • 映射可以标记为public,Solidity 自动为它创建getter。

示例

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


浙ICP备17015664号-1 浙公网安备 33011002012336号 联系我们 网站地图  
@2019 qikegu.com 版权所有,禁止转载