1 | function (<parameter types>) {public|internal|external} [pure|constant|view|payable] [returns (<return types>)] |
1、与区块链交互
2、本地执行
3、封装代码
1234567 | uint public num; string public name; function setparam(uint _num,string _name) public { num = _num; name = _name; } |
12345678910111213141516171819202122232425262728293031323334 | pragma solidity ^0.4.23;contract funcParam{ //状态变量 uint public num; string public name; //代餐函数 function setparam(uint _num,string _name) public { num = _num; name = _name; } //调用 function Test() public { setparam(99,"bob"); } //函数命名参数 function Test2() public { setparam({_num:99,_name:"bob"}); } function Test3() public { setparam({_name:"Alice",_num:999}); } //错误代码,参数个数不匹配 // function Test4() public { // setparam(100); // }} |
在一个合约中有相同名字的函数,就是函数的重载。
重载必须要函数的类型与长度都不相同。
下面的例子都是错误的写法
1234567 | function fun(){} function fun(){} |
1234567 | function fun() returns(uint){ } function fun() returns(bytes1){ } |
1234567 | function fun() returns(uint){} function fun(){} |
1234567 | function fun(uint k) public pure{ }function fun() public pure{} |
1234567 | function fun2(uint a) public pure{}function fun2(bytes1 b) public pure{} |
在下面的例子中,fun3有两个重载的函数。函数test不能够调用fun3(2),因为不能够明确到底是要调用哪一个。
fun3(256)能够执行成功。因为256超过了int8的最大值,只能够调用fun3(uint a). 如果想明确,可以强制的转换,例如uint256(2)。
12345678910111213 | function fun3(uint a) public { num = 256;}function fun3(uint8 b) public{ num = 8;} function test() public{ //fun3(2);错误,不明确 fun3(256); fun3(uint256(2));} |
本文链接: https://dreamerjonson.com/2018/11/21/solidity-27-function-overload/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY 4.0 CN协议 许可协议。转载请注明出处!
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。