我正在创建一个存储字符串数组的合约。
我正在测试松露和甘纳许 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,因此没有空间存储任何内容。
只需完全删除index
内容并使用push
,这将为您增加数组的大小:
function putData(string _d) public {
data.push(_d);
}