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

Ethereum 获取公共数组变量(getter)的长度,ethereum,contract,solidity,Ethereum,Contract,Solidity,我正在尝试从另一个联系人处获取数组的长度。怎么做 contract Lottery { unint[] public bets; } contract CheckLottery { function CheckLottery() { Lottery.bets.length; } } 您必须在源协定中将所需的长度作为函数返回值公开 调用合同需要ABI和合同地址,通过下面的状态变量和构造函数处理 pragma solidity ^0.4.8; contr

我正在尝试从另一个联系人处获取数组的长度。怎么做

contract Lottery {
    unint[] public bets;
}

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

您必须在源协定中将所需的长度作为函数返回值公开

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

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();
    }
}

希望能有帮助

是的,似乎该属性(方法)在默认情况下没有公开。只是想知道为什么
getBetCount()
有6行?我没有VR 360 space dome code环境,我更喜欢保留屏幕不动产…我们知道为什么我们必须对数组使用
getter
,但对于像
uint256
这样的灵长类,我们可以这样称呼它们:如果我理解这个问题。。。可以对
public
数组元素使用“free”getter,但对数组或整个数组的
length
属性没有“free”getter。除非您真正理解其含义,否则应该避免传递整个数组。