首页 > 其他分享 >【从0学习Solidity】 4. 函数输出

【从0学习Solidity】 4. 函数输出

时间:2023-09-27 15:02:49浏览次数:40  
标签:返回 输出 return 函数 uint256 Solidity bool 返回值 array


【从0学习Solidity】 4. 函数输出

【从0学习Solidity】 4. 函数输出_赋值

  • 博主简介:不写代码没饭吃,一名全栈领域的创作者,专注于研究互联网产品的解决方案和技术。熟悉云原生、微服务架构,分享一些项目实战经验以及前沿技术的见解。
  • 关注我们的主页,探索全栈开发,期待与您一起在移动开发的世界中,不断进步和创造!
  • 本文收录于 不写代码没饭吃 的学习汇报系列,大家有兴趣的可以看一看。
  • 欢迎访问我们的微信公众号:不写代码没饭吃,获取更多精彩内容、实用技巧、行业资讯等。您关注的是我们前进的动力!

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

返回值:return 和 returns

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

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

在上述代码中,我们利用 returns 关键字声明了有多个返回值的 returnMultiple() 函数,然后我们在函数主体中使用 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 上运行

  • 部署合约后查看三种返回方式的结果

【从0学习Solidity】 4. 函数输出_原力计划_02

总结

这一讲,我们介绍 Solidity 函数返回值,包括:返回多种变量,命名式返回,以及利用解构式赋值读取全部或部分返回值。这些知识点有助于我们在编写智能合约时更灵活地处理函数返回值。

【从0学习Solidity】 4. 函数输出_函数返回值_03

如果这份博客对大家有帮助,希望各位给作者一个免费的点赞

标签:返回,输出,return,函数,uint256,Solidity,bool,返回值,array
From: https://blog.51cto.com/u_15344421/7625416

相关文章

  • 【从0学习Solidity】 6. 引用类型, array, struct
    【从0学习Solidity】6.引用类型,array,struct博主简介:不写代码没饭吃,一名全栈领域的创作者,专注于研究互联网产品的解决方案和技术。熟悉云原生、微服务架构,分享一些项目实战经验以及前沿技术的见解。关注我们的主页,探索全栈开发,期待与您一起在移动开发的世界中,不断进步和创造!本......
  • 【从0学习Solidity】 5. 变量数据存储和作用域 storage/memory/calldata
    【从0学习Solidity】5.变量数据存储和作用域storage/memory/calldata博主简介:不写代码没饭吃,一名全栈领域的创作者,专注于研究互联网产品的解决方案和技术。熟悉云原生、微服务架构,分享一些项目实战经验以及前沿技术的见解。关注我们的主页,探索全栈开发,期待与您一起在移动开发的......
  • 【从0学习Solidity】 3. 函数详解
    【从0学习Solidity】3.函数详解博主简介:不写代码没饭吃,一名全栈领域的创作者,专注于研究互联网产品的解决方案和技术。熟悉云原生、微服务架构,分享一些项目实战经验以及前沿技术的见解。关注我们的主页,探索全栈开发,期待与您一起在移动开发的世界中,不断进步和创造!本文收录于不写代......
  • 案例6:输入一个小写字母,然后输出一个大写字母
    本题主要是考察大小写字母的转换,大写字母A~Z的ascii码分别是65~90,小写字母a~z的ascii码分别是97~122,它们之间的差值是32。比如小写字母a的ascill码的值97,减去大写字母A的ascii的值65,结果为32。示例代码如下:#define_CRT_SECURE_NO_WARNINGS1#include<stdio.h>voidmain(){......
  • 27、Flink 的SQL之SELECT (窗口函数)介绍及详细示例(3)
    文章目录Flink系列文章一、Windowingtable-valuedfunctions(WindowingTVFs)1、TUMBLE滚动窗口1)、示例1-使用滚动窗口查询、统计(表不含主键)2)、示例2-使用滚动窗口查询、统计(表含主键)3)、官方示例-使用滚动窗口查询、统计(未验证)2、HOP滑动窗口1)、示例1-使用滑动窗口查询、统计2)......
  • Python中的函数注释:参数有冒号,声明后有-> 箭头
    我在查看python的fixture源码时发现fixture的方法定义形式如下:deffixture(fixture_function:Optional[_FixtureFunction]=None,*,scope:"Union[_Scope,Callable[[str,Config],_Scope]]"="function",params:Optional[Iterable[object]]......
  • 进阶Python,从编写Python函数开始!
    好多同学都有这样的疑惑,我学习了python的基础语法,那么具体应用该从哪里入手呢?首先大家要确定,代码必须用起来才能越来越熟练!读懂十行代码不如自己亲自上手遍写一行!代码想熟练最好的方法就是能够通过代码解决工作中的实际问题,例如完成UI自动化测试、接口测试、创建测试数据、构建测试......
  • 库函数 | C++17 std::filesystem文件系统 用法指北
    本文将针对常用的场景,对std::filesystem的使用逐一进行验证:判断文件夹是否存在创建单层目录逐级创建多层目录创建多级目录当前文件路径创建文件"from.dat"获取相对于base的绝对路径文件拷贝移动文件或重命名创建文件“example.dat”获取文件大小获取文件最后修改......
  • C++函数返回对象效率以及使用建议
    C++中函数返回值与拷贝白给程序猿 最新推荐文章于 2022-08-2218:48:40 分类专栏: c++ 文章标签: c++ 编程语言五一假期最后一天,看JUC看的头疼,写写blog放松一下。作为自己的第一篇blog,自己就先来谈谈对C++中函数返回return的理解,自己本来在学Java,但是平......
  • 智能合约-solidity
    智能合约-solidity语言学习Solidity是一种静态类型语言,这意味着每个变量(状态变量和局部变量)都需要在编译时指定变量的类型。Solidity提供了几种基本类型,并且基本类型可以用来组合出复杂类型。除此之外,类型之间可以在包含运算符号的表达式中进行交互。关于各种运算符号,可以参......