错误无效的操作码试图访问硬帽结构体的坚实数组



我有以下结构体和数组在我的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 

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

问题注释中指出,调用characters(0)函数时,characters数组为空。

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

当您尝试访问超出边界的索引时,EVM会抛出异常。

相关内容

  • 没有找到相关文章

最新更新