45 lines
1.0 KiB
Solidity
45 lines
1.0 KiB
Solidity
// SPDX-License-Identifier: MIT
|
|
pragma solidity ^0.8.26;
|
|
|
|
library RecursiveDep {
|
|
function AddOne(uint256 val) public pure returns (uint256 ret) {
|
|
return val + 1;
|
|
}
|
|
}
|
|
|
|
// Array function to delete element at index and re-organize the array
|
|
// so that there are no gaps between the elements.
|
|
library Array {
|
|
using RecursiveDep for uint256;
|
|
|
|
function remove(uint256[] storage arr, uint256 index) public {
|
|
// Move the last element into the place to delete
|
|
require(arr.length > 0, "Can't remove from empty array");
|
|
arr[index] = arr[arr.length - 1];
|
|
arr[index] = arr[index].AddOne();
|
|
arr.pop();
|
|
}
|
|
}
|
|
|
|
contract TestArray {
|
|
using Array for uint256[];
|
|
|
|
uint256[] public arr;
|
|
|
|
function testArrayRemove(uint256 value) public {
|
|
for (uint256 i = 0; i < 3; i++) {
|
|
arr.push(i);
|
|
}
|
|
|
|
arr.remove(1);
|
|
|
|
assert(arr.length == 2);
|
|
assert(arr[0] == 0);
|
|
assert(arr[1] == 2);
|
|
}
|
|
|
|
constructor(uint256 foobar) {
|
|
|
|
}
|
|
}
|