Skip to content

Commit

Permalink
Merge pull request #564 from XdpCs/fix-04-markdown
Browse files Browse the repository at this point in the history
docs(04_return/readme.md): fix markdown's warnings and update some names
  • Loading branch information
AmazingAng authored Nov 6, 2023
2 parents ca17037 + 960e234 commit 0d68b98
Show file tree
Hide file tree
Showing 4 changed files with 20 additions and 22 deletions.
2 changes: 1 addition & 1 deletion 01_HelloWeb3/readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ tags:

# WTF Solidity极简入门: 1. Hello Web3 (三行代码)

我最近在重新学solidity,巩固一下细节,也写一个“WTF Solidity极简入门”,供小白们使用(编程大佬可以另找教程),每周更新1-3讲。
我最近在重新学Solidity,巩固一下细节,也写一个“WTF Solidity极简入门”,供小白们使用(编程大佬可以另找教程),每周更新1-3讲。

推特:[@0xAA_Science](https://twitter.com/0xAA_Science)

Expand Down
2 changes: 1 addition & 1 deletion 02_ValueTypes/readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ tags:

# WTF Solidity极简入门: 2. 值类型

我最近在重新学solidity,巩固一下细节,也写一个“WTF Solidity极简入门”,供小白们使用(编程大佬可以另找教程),每周更新1-3讲。
我最近在重新学Solidity,巩固一下细节,也写一个“WTF Solidity极简入门”,供小白们使用(编程大佬可以另找教程),每周更新1-3讲。

推特:[@0xAA_Science](https://twitter.com/0xAA_Science)

Expand Down
2 changes: 1 addition & 1 deletion 03_Function/readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ tags:

# WTF Solidity极简入门: 3. 函数

我最近在重新学solidity,巩固一下细节,也写一个“WTF Solidity极简入门”,供小白们使用(编程大佬可以另找教程),每周更新1-3讲。
我最近在重新学Solidity,巩固一下细节,也写一个“WTF Solidity极简入门”,供小白们使用(编程大佬可以另找教程),每周更新1-3讲。

推特:[@0xAA_Science](https://twitter.com/0xAA_Science)

Expand Down
36 changes: 17 additions & 19 deletions 04_Return/readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ tags:

# WTF Solidity极简入门: 4. 函数输出

我最近在重新学solidity,巩固一下细节,也写一个“WTF Solidity极简入门”,供小白们使用(编程大佬可以另找教程),每周更新1-3讲。
我最近在重新学Solidity,巩固一下细节,也写一个“WTF Solidity极简入门”,供小白们使用(编程大佬可以另找教程),每周更新1-3讲。

推特:[@0xAA_Science](https://twitter.com/0xAA_Science)

Expand All @@ -31,8 +31,8 @@ Solidity 中与函数输出相关的有两个关键字:`return`和`returns`。
```solidity
// 返回多个变量
function returnMultiple() public pure returns(uint256, bool, uint256[3] memory){
return(1, true, [uint256(1),2,5]);
}
return(1, true, [uint256(1),2,5]);
}
```

在上述代码中,我们利用 `returns` 关键字声明了有多个返回值的 `returnMultiple()` 函数,然后我们在函数主体中使用 `return(1, true, [uint256(1),2,5])` 确定了返回值。你可能会疑惑 uint256[3] memory 和 [uint256(1), 2,5] 这两个写法,你可以先在网上搜一下相关的说明或者带着这个疑惑继续学习后面的章节,你就会得到答案了。
Expand All @@ -53,41 +53,39 @@ function returnNamed() public pure returns(uint256 _number, bool _bool, uint256[
在上述代码中,我们用 `returns(uint256 _number, bool _bool, uint256[3] memory _array)` 声明了返回变量类型以及变量名。这样,在主体中只需为变量 `_number``_bool``_array` 赋值,即可自动返回。

当然,你也可以在命名式返回中用 `return` 来返回变量:

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

## 解构式赋值

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

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

```solidity
uint256 _number;
bool _bool;
uint256[3] memory _array;
(_number, _bool, _array) = returnNamed();
```
```solidity
uint256 _number;
bool _bool;
uint256[3] memory _array;
(_number, _bool, _array) = returnNamed();
```
- 读取部分返回值:声明要读取的返回值对应的变量,不读取的留空。在下面的代码中,我们只读取`_bool`,而不读取返回的`_number`和`_array`:
```solidity
(, _bool2, ) = returnNamed();
```
```solidity
(, _bool2, ) = returnNamed();
```
## 在 Remix 上运行
- 部署合约后查看三种返回方式的结果
![](./img/4-1.png)

![4-1.png](./img/4-1.png)
## 总结
这一讲,我们介绍 Solidity 函数返回值,包括:返回多种变量,命名式返回,以及利用解构式赋值读取全部或部分返回值。这些知识点有助于我们在编写智能合约时更灵活地处理函数返回值。



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

0 comments on commit 0d68b98

Please sign in to comment.