Solidity快速入门之函数输出

返回值return和returns

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

  • returns加在函数名后面,用于声明返回的变量类型及变量名;
  • return用于函数主体中,返回想要返回的变量;

    上面这段代码里面,我们使用returns声明了多个返回值,接着我们把(1,true,"\u4F60\u597D")返回了出来;

为什么返回\u4F60\u597D显示的是你好,大家请看下面这篇文章

Solidity函数返回中文

大家可能会好奇为什么string后面要加memory

因为在Solidity中,memory是一种数据位置关键字,用于指定函数参数或返回值的数据存储位置。

在函数定义中,使用memory关键字可以将参数或返回值标记为在函数执行期间使用临时内存来存储数据。这意味着数据将在函数执行结束后被清除,不会保留在区块链上。

在上面的代码例子里面string类型的返回值被标记为memory,表示返回的字符串将在函数执行期间存储在临时内存中。这是因为字符串类型是动态大小的,需要使用内存来存储其内容。

小提示

使用memory关键字标记的参数或返回值只能用于纯函数(pure函数)或视图函数(view函数),因为这些函数不会修改或访问合约的状态。

命名式返回

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

当然我们也可以在命名式返回中用return来返回

解构式赋值

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

  • 读取所有返回值:声明变量,并且将要赋值的变量用,隔开,按赋值顺序排列。
  • 读取部分返回值:声明要读取的返回值对应的变量,不读取的留空。
相关推荐
CryptoRzz4 小时前
StockTV API 对接全攻略(股票、期货、IPO)
java·javascript·git·web3·区块链·github
hopsky5 小时前
以太坊区块链-基础概念
区块链
DICOM医学影像8 小时前
6. Hardhat编写、编译、部署、测试Solidity ERC20合约 - 进阶篇 - web3.js调用区块链方法
区块链·智能合约·solidity·以太坊·web3.0·web3.js·hardhat
Sui_Network9 小时前
智能体支付时代:Sui 为 AI 构建可验证的金融基础设施
大数据·人工智能·游戏·金融·rpc·区块链·量子计算
DICOM医学影像10 小时前
8. Hardhat编写、编译、部署、测试Solidity ERC20合约 - 进阶篇 - JSON-RPC调用区块链方法
区块链·solidity·以太坊·web3.0·json-rpc·erc20
DICOM医学影像10 小时前
9. Hardhat编写、编译、部署、测试Solidity ERC20合约 - 总结
区块链·智能合约·solidity·以太坊·web3.0·hardhat·json-rpc
myan10 小时前
稳定币与 RWA 闭环将成为新的美元护城河
区块链
Gofarlic_oms110 小时前
区块链存证节点搭建:金融行业审计证据链构建指南
运维·人工智能·金融·数据挖掘·区块链·需求分析·devops
DICOM医学影像10 小时前
2. Remix编写、编译、部署、测试Solidity ERC20合约 - 进阶篇
区块链·solidity·以太坊·web3.0·hardhat·erc20
DICOM医学影像11 小时前
7. Hardhat编写、编译、部署、测试Solidity ERC20合约 - 进阶篇 - JSON-RPC调用合约方法
区块链·solidity·以太坊·web3.0·erc20·jsonrpc