Solidity 小白教程:4. 函数输出 return

Solidity 小白教程:4. 函数输出 return

这一讲,我们将介绍Solidity函数输出,包括:返回多种变量,命名式返回,以及利用解构式赋值读取全部和部分返回值。

返回值 return 和 returns

Solidity有两个关键字与函数输出相关:returnreturns,他们的区别在于:

  • returns加在函数名后面,用于声明返回的变量类型及变量名;
  • return用于函数主体中,返回指定的变量。
// 返回多个变量
    function returnMultiple() public pure returns(uint256, bool, uint256[3] memory){
            return(1, true, [uint256(1),2,5]);
        }

上面这段代码中,我们声明了**returnMultiple()函数将有多个输出:returns(uint256, bool, uint256[3] memory),接着我们在函数主体中用return(1, true, [uint256(1),2,5])**确定了返回值。

命名式返回

我们可以在returns中标明返回变量的名称,这样solidity会自动给这些变量初始化,并且自动返回这些函数的值,不需要加return

// 命名式返回
    function returnNamed() public pure returns(uint256 _number, bool _bool, uint256[3] memory _array){
        _number = 2;
        _bool = false;
        _array = [uint256(3),2,1];
    }

在上面的代码中,我们用returns(uint256 _number, bool _bool, uint256[3] memory _array)声明了返回变量类型以及变量名。这样,我们在主体中只需要给变量_number_bool和**_array赋值就可以自动返回了。
当然,你也可以在命名式返回中用
return**来返回变量:

// 命名式返回,依然支持return
    function returnNamed2() public pure returns(uint256 _number, bool _bool, uint256[3] memory _array){
        return(1, true, [uint256(1),2,5]);
    }

解构式赋值

solidity使用解构式赋值的规则,支持读取函数的全部或部分返回值。

  • 读取所有返回值:声明变量,并且将要赋值的变量用**,**隔开,按顺序排列。
uint256 _number;
        bool _bool;
        uint256[3] memory _array;
        (_number, _bool, _array) = returnNamed();
  • 读取部分返回值:声明要读取的返回值对应的变量,不读取的留空。下面这段代码中,我们只读取**_bool**,而不读取返回的**_number_array**:
(, _bool2, ) = returnNamed();

在 remix 上验证

  • 部署合约后查看三种返回方式的结果Solidity 小白教程:4. 函数输出 return_第1张图片

总结

这一讲,我们介绍函数的返回值returnreturns,包括:返回多种变量,命名式返回,以及利用解构式赋值读取全部和部分返回值。

你可能感兴趣的:(区块链,智能合约,网络安全,安全,系统安全,web安全,安全架构)