小编Soh*_*hir的帖子

请求的从 uint256[10] 内存到 uint256[] 内存的隐式转换无效

所以显然我们不能在使用内存数据位置时使用动态数组。但下面的代码给了我错误:

// SPDX-License-Identifier: GPL-3.0

pragma solidity >=0.7.0 <0.9.0;

contract A {
    uint256[] public numbers;
    
    constructor(uint256[] memory _numbers) {
        for(uint256 i=0; i<_numbers.length; i++) {
            numbers.push(_numbers[i]);
        }
    }

    function get() public view returns (uint256[] memory) {
        return numbers;
    }
}

contract Manager {
    function makeA() public returns(uint256) {
        uint256[10] memory numbers;
        // push is not supported for memory data location of array
        numbers[0] = 10;

        A a = new A(numbers); //Error: Invalid implicit conversion from uint256[10] memory to uint256[] memory requested

        return …
Run Code Online (Sandbox Code Playgroud)

dynamic-arrays solidity

5
推荐指数
1
解决办法
1303
查看次数

标签 统计

dynamic-arrays ×1

solidity ×1