ethereum - 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'。谢谢。
解决方案
推荐阅读
- javascript - Javascript 在 HTML 中更改了我的 Div 的格式
- docker - docker-proxy 保持端口开放,无法启动服务
- swift - 在控制 NSTableView 的同时更新 NSTextField
- c# - 包含多个具有相同名称 Newtonsoft.Json.dll 或当前平台的预编译程序集
- macos - 使用xampp在mac中上传PHP文件
- ibm-cloud-functions - IBM Cloud Functions Service 在尝试创建与 Cloudant 操作的新绑定时无法检索数据库列表
- javascript - 如何比较多个对象数组
- mongodb - MongoDB 排序数组
得到错误的结果 - python - 调整权限以允许 python 程序能够更新时间
- java - 将Java中的多边形放大给定距离