函数输出

  1. 返回值 return和returns
  2. 解构式赋值

返回值 return和returns

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

  • returns加在函数名后面,用于声明返回的变量类型及变量名;

  • return用于函数主体中,返回指定的变量。

// SPDX-License-Identifier: MIT

//声明solidity版本 这行代码意思是源文件将不允许小于 0.8.4 版本或大于等于 0.9.0 版本的编译器编译
pragma solidity ^0.8.4; 

contract HelloWeb3{
    //
    function returnMultiple() public pure returns(uint256, bool, uint256[3] memory){
            return(1, true, [uint256(1),2,5]);
        }

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

解构式赋值

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

读取所有返回值:声明变量,并且将要赋值的变量用,隔开,按顺序排列。

// SPDX-License-Identifier: MIT

//声明solidity版本 这行代码意思是源文件将不允许小于 0.8.4 版本或大于等于 0.9.0 版本的编译器编译
pragma solidity ^0.8.4; 

contract HelloWeb3{


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

    function readNamed() public pure{
        uint256 _number;
        bool _bool;
        uint256[3] memory _array;
        (_number, _bool, _array) = returnNamed();

        //或者只读取一个值  (, _bool, ) = returnNamed();

    }
}

转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。