Solidity代码getNumber()函数报错,求原因分析及修正方案
错误原因与代码修正
错误解释
你遇到的TypeError: Different number of arguments in return statement than in returns declaration报错,核心原因是**getNumber()函数声明未指定返回值类型,但实际执行了返回操作**。
在Solidity中,所有需要返回数据的函数,必须在函数签名里通过returns关键字明确声明返回值的类型(多返回值还要指定对应类型列表)。你的getNumber()函数只标记了view(表示只读不修改合约状态),但没声明返回值类型,编译器默认认为这个函数不需要返回任何值,但你在函数体内用return number;返回了一个uint类型的值,两者矛盾,因此触发报错。
修正后的代码
// SPDX-License-Identifier: MIT pragma solidity >=0.8.9; contract Storage { uint number; // takes a value _number and assigns it to the state variable number function setNumber(uint _number) public { number = _number; } // returns the value of the state variable number function getNumber() public view returns(uint) { return number; } }
只需要给getNumber()函数添加returns(uint)声明,明确告诉编译器这个函数会返回一个uint类型的值,就能解决问题。
内容的提问来源于stack exchange,提问作者Harshit Kumar
相关产品推荐
相关产品推荐

