智能合约编译正常,但随后尖叫 "BigNumber"

Smart Contract compiles fine but then screams about "BigNumber"

编译正常,但在调用“house”时我收到以下错误:

错误:BigNumber 字符串无效 (argument="value", value="", code=INVALID_ARGUMENT, version=bignumber/5.4.1)

有人知道为什么吗?谢谢!

pragma solidity ^0.8.4;

contract Test {
     uint[] public house = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];

    
    function sugMa() public view returns (uint) {
        uint even = 0;
        for (uint i = 0; i <= house.length; i++) {
            if (i % 2 == 0) {
                even += 1;
            }
        }
        return even;
    
    }

}

当您调用 house() 自动生成的 getter 函数而不提供参数时会发生错误。

house是一维数组,需要选择要访问的索引


Solidity 目前 (v0.8) 不支持从自动生成的 getter 函数调用整个数组。但是 - 您可以创建自己的函数 returns 整个数组。

function getHouse() external view returns (uint[] memory) {
    return house;
}

然后呢returns

uint256[]: 1,2,3,4,5,6,7,8,9,10