Solidity8.0
08-Solidity8.0数组
文章目录
前言
数组可以具有编译时固定大小或动态大小。
通过从右向左移动元素来删除数组元素
通过将最后一个元素复制到要删除的位置来删除数组元素
一、Solidity8.0数组
1.数组
代码如下(示例):
// SPDX-License-Identifier: MIT
pragma solidity ^0.8;
contract Array {
uint[] public arr;
uint[] public arr2 = [1, 2, 3];
uint[10] public myFixedSizeArr;
function get(uint i) public view returns (uint) {
return arr[i];
}
function getArr() public view returns (uint[] memory) {
return arr;
}
function push(uint i) public {
arr.push(i);
}
function pop() public {
arr.pop();
}
function getLength() public view returns (uint) {
return arr.length;
}
function remove(uint index) public {
delete arr[index];
}
function examples() external {
uint[] memory a = new uint[](5);
}
function removeDel(uint _index) public {
require(_index < arr.length, "index out of bound");
for (uint i = _index; i < arr.length - 1; i++) {
arr[i] = arr[i + 1];
}
arr.pop();
}
function remove(uint index) public {
arr[index] = arr[arr.length - 1];
arr.pop();
}
function test() public {
arr = [1, 2, 3, 4];
remove(1); // [1, 4, 3]
assert(arr.length == 3);
assert(arr[0] == 1);
assert(arr[1] == 4);
assert(arr[2] == 3);
remove(2); // [1, 4]
assert(arr.length == 2);
assert(arr[0] == 1);
assert(arr[1] == 4);
}
}
总结
日拱一卒。