无法重置 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 playersplayers.length = 0 但没有任何效果。

有什么建议吗?

您的代码仅适用于 5 元素数组,但数组越长,交易消耗的 gas 越多。

在这种情况下,您可以提高 gas limit。你的代码没有问题。