温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

solidity智能合约[27]-函数与函数重载

发布时间:2020-07-19 15:32:20 阅读:530 作者:jonson_jackson 栏目:开发技术
开发者测试专用服务器限时活动,0元免费领,库存有限,领完即止! 点击查看>>

函数的一般形式

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);    // }}

函数重载

在一个合约中有相同名字的函数,就是函数的重载。
重载必须要函数的类型与长度都不相同。

下面的例子都是错误的写法

错误1

1234567
function  fun(){} function  fun(){}

错误2

1234567
function  fun() returns(uint){ }  function  fun() returns(bytes1){ }

错误3

1234567
  function  fun() returns(uint){} function  fun(){}

正确1

1234567
function  fun(uint k) public pure{ }function  fun() public pure{}

正确2

1234567
function  fun2(uint a) public pure{}function  fun2(bytes1 b) public pure{}

例子剖析1

在下面的例子中,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协议 许可协议。转载请注明出处!

solidity智能合约[27]-函数与函数重载

亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI

开发者交流群×