首页 > 解决方案 > Solidity,私有函数不能返回值

问题描述

下面的代码无法通过 metamask 估计 gasLimit, force send transaction 也失败了。

function calc(uint256 _boughtTokenAmount) private returns (uint256) {
    /* uint256 _circle = safeSub(now, startTime) % circleSecs; */
    uint256 _circle = 2;
    if(_circle == 0){
        return _boughtTokenAmount;
    }else{
        uint256 _d = safeMul(100 , safeSub(lastCircle, 1));
        uint256 _n = safeSub(_d, safeMul(safeSub(_circle, 1), safeSub(attenuationCoefficient0 ,attenuationCoefficient)));

        uint256 _ret = safeMul(_boughtTokenAmount, _n);
        testRet = _ret;

        _ret = _ret/_d;
        testRet1 = _ret;
        return uint(_ret);
    }
}

如果将最后一行 'return uint(_ret)' 更改为 'return _boughtTokenAmount',则此代码有效,并且变量 '_d'、'_n'、'testRet1' 得到预期值。

所以我的问题是,如何返回变量'_ret'。谢谢。

标签: ethereumsolidity

解决方案


推荐阅读