solidity
solidity copied to clipboard
assignment to struct in array
I'll start with as little code as possible as likely "It's me not solc"
struct Allocation {
uint48 stakeTime;
uint48 unlockTime;
uint32 spare;
uint128 stakeAmount;
}
mapping(address => Allocation[]) public userMap;
Allocation[] storage allocations = userMap[_account];
Allocation storage a;
while (aid > i) {
a = allocations[aid];
if (a.unlockTime <= block.timestamp) {
++foundUnlocked;
totalAmount += a.stakeAmount;
// a = allocations[allocations.length - 1]; // Why does this does not work ????
allocations[aid] = allocations[allocations.length - 1]; // this works
allocations.pop();
}
--aid;
}
I understand that array of struct if a reference type, but why can't I assign to a that it shows up in allocations[aid] (as it should point to the same storage slot) ?
If I assign individual variables within a struct it works, but that is of course not an efficient alternative.
a = allocations[i];
a.stakeAmount = totalAmount.toUint128();
a.stakeTime = uint48(block.timestamp);
a.unlockTime = uint48(block.timestamp);
What am I missing ?
hey @SvenMeyer
How can we reproduce the code ?
Maybe we can help you with the entire code.