Solidity中getInfo函数返回参数数量不匹配的TypeError问题求助
Solidity返回语句参数数量不匹配错误修复
错误原因
你的getInfo函数声明要返回两个独立的uint和address类型,但return语句直接返回了整个Info结构体实例。Solidity不会自动把结构体拆成多个单独的返回值,所以触发了「返回语句参数数量与声明不匹配」的类型错误。
两种修复方案
方案1:显式返回结构体成员
把结构体里的两个字段分别取出返回,匹配函数声明的返回值数量:
function getInfo(uint _infoid) external view returns (uint, address) { Info memory info = infos[_infoid]; return (info._id, info._add); }
方案2:修改返回类型为结构体
如果想直接返回整个结构体,调整函数的返回类型为Info即可,这样原return语句就合法了:
function getInfo(uint _infoid) external view returns (Info memory) { return infos[_infoid]; }
注:用这个方案的话,调用该函数的外部合约或前端需要支持处理结构体类型的返回值。
内容的提问来源于stack exchange,提问作者ETHERC20
相关产品推荐
相关产品推荐

