智能合约part5:小知识点续

Posted by 孔剑敏 on October 30, 2019

这里紧接上一篇智能合约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为准。