如何在实体上返回嵌套数组

时间:2019-07-30 09:18:58

标签: solidity

我正在尝试返回嵌套数组     错误按摩说

  

“ 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[];
    } 

1 个答案:

答案 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;
    }

}