Solidity合约报错求助:ParserError: Expected primary expression
修复Solidity合约的ParserError及语法问题
原代码存在多处语法与逻辑错误,直接导致ParserError: Expected primary expression报错,具体问题及修复方式如下:
错误1:返回值写法完全错误
原代码中returns = d;不符合Solidity语法,returns是函数声明的关键字,并非变量,返回值需用return关键字直接返回。错误2:非法变量调用与未定义变量
d(2)是错误写法——d是uint类型变量,不能当作函数调用;同时result变量未声明就直接使用,会触发编译错误。错误3:语句缺少结束分号
return = d(2) - b末尾未加分号,Solidity要求每条语句必须以分号结尾。错误4:函数返回路径不完整
原函数仅在if条件满足时存在返回逻辑,若条件不满足则无返回值,违反了returns(uint)的声明要求,必须保证所有代码路径都有返回值。逻辑冗余优化(非语法错误)
a <= a的判断永远为true,可直接简化为判断b < f。
修复后的完整合约代码:
pragma solidity >= 0.7.0 < 0.9.0; contract FinalExcercise { uint a = 300; uint b = 12; uint f = 47; function finalize() public view returns (uint) { uint d = 23; if (b < f) { // 推测你想实现d的2倍减b,若需求不同可自行调整计算逻辑 uint result = d * 2 - b; return result; } // 补充条件不满足时的返回值,保证路径完整 return d; } }
内容的提问来源于stack exchange,提问作者sly955
相关产品推荐
相关产品推荐

