1

我的 Solidity 代码中有以下结构和数组:

    struct Character {
        int256 strength;
        uint256 dexterity;
        uint256 constitution;
       ....
    }

    Character[] public characters;

我在尝试访问该数组的成员的 Hardhat 测试中有以下行:

const character = await contract.characters(0)

然后我收到以下错误:

 Error: VM Exception while processing transaction: invalid opcode
      at Contract.characters 

访问此结构数组成员的正确方法是什么?

4

1 回答 1

1

正如问题评论中指出的那样,调用函数characters时数组为空。characters(0)

Solidity 为public数组自动生成 getter 函数,允许使用其索引访问数组中的一项。

当您尝试访问超出范围的索引时,EVM 会引发异常。

于 2021-10-22T07:56:39.253 回答