无法重置 Solidity 合约数组变量
Can't reset Solidity contract array variable
我想重置以下合约中的 players
动态数组变量:
pragma solidity ^0.4.17;
contract Lottery {
address[] public players;
function enter() public payable {
require(msg.value > .01 ether);
players.push(msg.sender);
}
function pickWinner() public {
players[0].transfer(this.balance);
players = new address[](0); // <------- HERE
}
}
在数组中推送新地址工作正常,但将其重置为空数组不起作用:我收到 The transaction ran out of gas. Please increase the Gas Limit.
错误(即使我增加了气体限制)。
我也试过 delete players
和 players.length = 0
但没有任何效果。
有什么建议吗?
您的代码仅适用于 5 元素数组,但数组越长,交易消耗的 gas 越多。
在这种情况下,您可以提高 gas limit。你的代码没有问题。
我想重置以下合约中的 players
动态数组变量:
pragma solidity ^0.4.17;
contract Lottery {
address[] public players;
function enter() public payable {
require(msg.value > .01 ether);
players.push(msg.sender);
}
function pickWinner() public {
players[0].transfer(this.balance);
players = new address[](0); // <------- HERE
}
}
在数组中推送新地址工作正常,但将其重置为空数组不起作用:我收到 The transaction ran out of gas. Please increase the Gas Limit.
错误(即使我增加了气体限制)。
我也试过 delete players
和 players.length = 0
但没有任何效果。
有什么建议吗?
您的代码仅适用于 5 元素数组,但数组越长,交易消耗的 gas 越多。
在这种情况下,您可以提高 gas limit。你的代码没有问题。