We're implementing a Lottery where a player can buy multiple tickets.
A ticket is defined with a struct and they are being kept in a storage struct[]:
pragma solidity >=0.4.22 <0.9.0;
contract Lottery {
struct Ticket {
address payable playerAddress;
uint256 potAtParticipation;
uint256 potWithStake;
}
Ticket[] tickets;
constructor() {
_createLottery();
}
After a specific block a winner gets determined and the lottery should be restarted. Therefore, we'd like to reset the tickets:
function _createLottery() internal {
tickets = new Ticket[](0); //this is not working as intended
}
}
We're now facing the issue, that the code above does not empty/reset the array, due the combination of being a storage struct array - which makes sense.
But here we're stuck. What other approaches are there to accomplish a reset of our tickets?
We've seen ideas such as use delete (Understanding more about delete keyword in solidity) and pop. But it seems not to be doing quite the job / feels too complicated.
What would be the best practice/a good approach here?
Thanks for any inputs!