获取公共数组变量的长度(getter)

时间:2017-03-25 11:54:12

标签: ethereum contract solidity

我想从另一个联系人那里得到数组的长度。怎么样?

contract Lottery {
    unint[] public bets;
}

contract CheckLottery {
    function CheckLottery() {
        Lottery.bets.length;
    }
}

1 个答案:

答案 0 :(得分:6)

您必须在源合约中公开您想要的长度作为函数返回值。

调用合同将需要ABI和合同地址,该地址通过下面的状态var和构造函数处理。

pragma solidity ^0.4.8;

contract Lottery {

    uint[] public bets;

    function getBetCount()
        public 
        constant
        returns(uint betCount)
    {
        return bets.length;
    }
}

contract CheckLottery {

    Lottery l;

    function CheckLottery(address lottery) {
        l = Lottery(lottery);
    }

    function checkLottery() 
        public
        constant
        returns(uint count) 
    {
        return l.getBetCount();
    }
}

希望它有所帮助。