与数组和结构体一样,映射也是引用类型。下面是声明映射类型的语法。
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"
}