Solidity 练习:View 和 Pure 函数
睡不醒的鲤鱼 2022-12-29 Web3 Solidity
# 一、题目说明
不向区块链写入任何内容的函数可以声明为 view 或 pure。
view 和 pure 的区别是什么?
- view 函数可以读取状态变量和全局变量。
- pure 函数不可以读取状态变量和全局变量。
# 二、任务列表
- 编写函数 addToNum,输入 uint 类型的 x,返回 num + x。必须声明为 external,适当选择 view 或者 pure。
- 编写函数 add,输入 uint 类型的 x 和 y,返回 x + y,必须声明为 external,适当选择 view 或者 pure。
# 三、解答代码
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.17;
contract ViewAndPureFunctions {
uint public num;
// 这是一个 view 函数,因为读取了状态变量 num
function viewFunc() external view returns (uint) {
return num;
}
// 这是一个 pure 函数,它没有读取状态或全局变量
function pureFunc() external pure returns (uint) {
return 1;
}
function addToNum(uint x) external view returns (uint) {
return num + x;
}
function add(uint x, uint y) external pure returns (uint) {
return x + y;
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24