solidity智能合约[27]-函数与函数重载-创新互联

函数的一般形式

1
function () {public|internal|external} [pure|constant|view|payable] [returns ()]

函数的作用

1、与区块链交互
2、本地执行
3、封装代码

成都创新互联公司专注于中小企业网站建设、策划制作、运行维护,主要提供一站式的企业网站建设服务。建站类型:公司网站建设、品牌网站建设、外贸网站制作独立站等。创新互联不是单一的建网站,而是结合企业的建站目标去规划网站怎么建,如何利于运营,寻求适合的建站方案。其次,网站后台操作的便捷性也是网站制作过程中的重点,成都创新互联公司的网站后台简单便捷,真正实现了零基础操作。

带参数函数

1
2
3
4
5
6
7
uint public num;
string public name;

function setparam(uint _num,string _name) public {
    num  = _num;
    name = _name;
}

带参函数调用—函数命名参数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
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

1
2
3
4
5
6
7
function  fun(){

}

function  fun(){

}

错误2

1
2
3
4
5
6
7
function  fun() returns(uint){

}

 function  fun() returns(bytes1){

}

错误3

1
2
3
4
5
6
7
 function  fun() returns(uint){

}

function  fun(){

}

正确1

1
2
3
4
5
6
7
function  fun(uint k) public pure{

}

function  fun() public pure{

}

正确2

1
2
3
4
5
6
7
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)。

1
2
3
4
5
6
7
8
9
10
11
12
13
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]-函数与函数重载

创新互联www.cdcxhl.cn,专业提供香港、美国云服务器,动态BGP最优骨干路由自动选择,持续稳定高效的网络助力业务部署。公司持有工信部办法的idc、isp许可证, 机房独有T级流量清洗系统配攻击溯源,准确进行流量调度,确保服务器高可用性。佳节活动现已开启,新人活动云服务器买多久送多久。


当前标题:solidity智能合约[27]-函数与函数重载-创新互联
新闻来源:http://myzitong.com/article/epssp.html