Solidity 练习:状态变量
睡不醒的鲤鱼 2022-12-29 Web3 Solidity
# 一、题目说明
在 Solidity 中有三种变量类型:局部变量、状态变量和全局变量。
让我们从状态变量开始。
状态变量存储在区块链上。因此,您可以将一些数据保存到状态变量中,即使一周后返回,数据仍在那里。
如何声明状态变量?
状态变量在合约内部声明,在函数外部声明。下面是一个例子:
contract MyContract {
// 这是一个状态变量
uint public myStateVariable;
function func() external {
// 这不是一个状态变量
uint notStateVariable = 123;
}
}
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
# 二、任务列表
- 编写一个 external 函数 resetNum,它将状态变量 num 重置为 0。
- 编写一个 external view 函数 getNumPlusOne,该函数将返回 num + 1,而不更新状态变量 num。
# 三、解答代码
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.17;
contract StateVariables {
uint public num;
function setNum(uint _num) external {
num = _num;
}
function resetNum() external {
num = 0;
}
// What is "view"?
// "view" tells Solidity that this is a read-only function.
// It does not make any updates to the blockchain.
function getNum() external view returns (uint) {
return num;
}
function getNumPlusOne() external view returns (uint) {
return num + 1;
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25