You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Solidity返回uint类型报错:代币总供应量查询函数编译失败如何解决?

Solidity编译报错原因分析

第一个报错(ParserError: Expected primary expression)触发原因

  • returns是Solidity中专门用于函数签名阶段声明返回值类型、数量的关键字,不允许写在函数执行体内部。函数执行体中返回数据必须使用return关键字,你混淆了两个关键字的使用场景,因此触发语法解析错误。

第二个报错(TypeError: Different number of arguments in return statement than in returns declaration)触发原因

  • 将returns改为return后,你的函数没有在签名位置声明返回值的类型和数量,编译器无法匹配到对应返回值定义,因此判定返回参数和声明不匹配。
  • 额外存在逻辑设计问题:CheckTotalSupply的作用是返回合约中存储的全局总发行量totalSupply,完全不需要额外定义uint supply作为入参,传入的参数和你要查询的目标值没有关联。

修正后的正确代码示例

address public owner;
mapping(address => uint) public balances;
uint public totalSupply; // 也可以直接加public修饰符,Solidity会自动生成查询函数,不需要手动写CheckTotalSupply

function mint(address receiver, uint amount) public {
    require(msg.sender == owner);
    totalSupply += amount;
    balances[receiver] += amount;
}

// 手动实现总供给查询函数的正确写法
function CheckTotalSupply() public view returns(uint) {
    return totalSupply;
}

补充说明:如果给状态变量totalSupply直接加public修饰符,Solidity会自动生成同名的查询函数,不需要你手动实现CheckTotalSupply也能调用查询总供给。

内容的提问来源于stack exchange,提问作者DamilolaOwonibi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 22:18:01