我正在创建一个存储字符串数组的合同。
我正在测试松露和ganache-cli的合同。当我用任何字符串调用方法putData()
时,都会出现错误Error: VM Exception while processing transaction: invalid opcode
。
代码如下:
pragma solidity ^0.4.24;
contract DataContract {
address public owner;
uint public index = 0;
string[] public data;
// Constructor
constructor() public {
owner = msg.sender;
}
function putData(string _d) public {
data[index] = _d;
index = index + 1;
}
}
我该如何做?
答案 0 :(得分:1)
您正在编写超出数组末尾的位置。 (它的长度为0,所以没有空间存储任何东西。)
只需完全丢弃 for (let i = 0; i < name.length; i++) {
texthtml += '<option value="'+name[i]+'">'+name[i]+'</option>';
}
并使用index
,这将为您增加数组的大小:
push