我正在尝试返回嵌套数组 错误按摩说
“ browser / HISTORYMultipleStateMach.sol:22:16:TypeError:索引表达式不能省略。 返回myArray []; ^ ------- ^“ “浏览器/HISTORYMultipleStateMach.sol:22:16:TypeError:索引表达式不能省略。 返回myArray []; ^ ------- ^“ 有人可以告诉我怎么了吗? 谢谢 枚举状态{ 一种, B, C }
State[] curState;
State[][] myArray;
uint i=0;
constructor(uint Machines)public{
for(i=0;i<Machines;i++){
curState.push(State.A);
myArray.push(curState);
}enter code here
}
function historyOfStateMachine() public{
return myArray[];
}
function historyOfStateMachine() public{
return myArray[];
}
答案 0 :(得分:1)
要返回完整的数组,应删除[]
中的return myArray[];
此外,尚无法返回two levels of dynamic arrays。
从version 0.4.19起,您可以激活对任意嵌套的实验性支持
使用指令pragma experimental ABIEncoderV2;
的数组。在这种情况下,您的代码如下:
pragma solidity ^0.4.19;
pragma experimental ABIEncoderV2;
contract MyContract {
enum State{ A, B, C }
State[] curState;
State[][] myArray;
uint i=0;
constructor(uint Machines)public{
for(i=0;i<Machines;i++){
curState.push(State.A);
myArray.push(curState);
}
}
function historyOfStateMachine() public view returns (State[][]) {
return myArray;
}
}