solidity 遍历mapping, 获取mapping 长度
·
```//SPDX-License-Identifier: MIT
pragma solidity >=0.8.0;
//0x534725eE6e6f99Cd74882F44DA70f2db320470b5
contract hello {
string public Msg;
uint256 public number;
// 原mapping
mapping(address => uint256) public blance;
//通过下标记录原mapping 的key
mapping(uint256 => address) record;
// maping 的长度
uint256 len = 0;
uint256 total;
event transferEvent(
address indexed from,
address indexed to,
uint256 amount
);
constructor() payable {
Msg = "hello world";
}
//mapping 插入
function add(address acount, uint256 amunt) public {
len++;
blance[acount] = amunt;
// 计数 mapping
record[len - 1] = acount;
}
//maping 遍历
function getTotal() public returns (uint) {
for (uint256 i = 0; i < len; i++) {
total = total + blance[record[i]];
}
return total;
}
function store(uint256 _number) external {
number = _number;
}
function getNumber() public view returns (uint256) {
return number;
}
// 获取合约当前余额 0xf188A42123C088C1330BFEA35a34298623D26386
function getContractBalance() external view returns (uint256) {
return address(this).balance;
}
function transfer(address to, uint256 amount) public {
// (bool success, ) = to.call{value: amount}(new bytes(0));
// require(success, "safeTransferETH: ETH transfer failed");
payable(to).transfer(amount);
emit transferEvent(msg.sender, to, amount);
}
function getBalance(address _address) external view returns (uint256) {
return address(_address).balance;
}
receive() external payable {}
}
```
更多推荐
所有评论(0)