我有以下结构体和数组在我的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会抛出异常。