che*_*o_c 4 blockchain ethereum solidity smartcontracts ether
我正在寻找一种方法来迭代 Solidity 中的映射。例如我有这个映射:
mapping (address => uint) private shares;
我想在一个函数中迭代所有地址,并根据它们的份额向它们发送以太币。
就像是:
function giveOutEth() onlyOwner returns (bool success){
for(uint i=0; i < shares.length ; i++){
//get the address and send a value
}
Run Code Online (Sandbox Code Playgroud)
}
我怎样才能实现这个目标?
谢谢
我收到了 drlecks 的答复:
contract Holders{
uint _totalHolders; // you should initialize this to 0 in the constructor
mapping (uint=> address ) private holders;
mapping (address => uint) private shares;
function GetShares(uint shares) public {
...
holders[_totalHolders] = msg.sender;
shares[msg.sender] = shares;
_totalHolders++;
...
}
function PayOut() public {
...
uint shares;
for(uint i = 0 ; i<_totalHolders; i++) {
shares = shares[holders[i]];
...
}
...
}
Run Code Online (Sandbox Code Playgroud)
}
但请记住,它会消耗gas,也许利益相关者提取他们的ETH并自己支付gas会更好。
| 归档时间: |
|
| 查看次数: |
14195 次 |
| 最近记录: |