这里紧接上一篇智能合约part4,继续介绍一些我在学习智能合约时遇到的一些问题,这些问题的背后就是这些知识点。希望这样的分享可以让初学智能合约的同学少走点弯路!
7.return关键字: 这是你写智能合约必定会碰到的关键字,每个函数都必须带有return关键字,它的作用是指定返回的值,使用return时,我们不会用到返回值的变量名称,可以省略。 我们以一个简单合约为例来学习一下如何使用return:
pragma solidity ^0.4.0;
contract Simple {
//使用`return`关键字指定返回值
function output1(uint a, uint b) returns (uint r){
return a + b;
}
//省略返回参数的变量名定义
function output2(uint a, uint b) returns (uint){
return a + b;
}
/*
function output3(uint a, uint b) returns (uint x, uint mul){
x = a + b;
mul = a * b;
//不能混合使用两种定义方式
//使用`return`时要返回所有定义
//Untitled3:18:9: Error: Different number of arguments in return statement than in returns declaration.
return x;
}
*/
function output4(uint a, uint b) returns (uint mul){
mul = a * b;
//不能混合使用两种定义方式
//使用`return`时要返回所有定义
//Untitled3:18:9: Error: Different number of arguments in return statement than in returns declaration.
return 1;//1
} }
我们在output1()中使用了return关键字来指定要返回的值;在output2()中我们省略了返回参数的变量名定义;一旦使用了return的定义方式,我们要保证return返回的参数数量要与定义匹配,如output3()所示。从output4()中我们可以看出来,如果同时使用return关键字和变量定义方式,以return为准。