08-Solidity8.0数组

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);
    }
}

总结

日拱一卒。

猜你喜欢

转载自blog.csdn.net/yyjava/article/details/125289091