Skip to content

Commit ea3356f

Browse files
committed
Add study notes for 2025-08-21
1 parent b082576 commit ea3356f

1 file changed

Lines changed: 30 additions & 0 deletions

File tree

buzhidaoa8848-hash.md

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,36 @@ timezone: UTC+8
1515
## Notes
1616

1717
<!-- Content_START -->
18+
# 2025-08-21
19+
20+
上hackquest学习,与AI讨论并让AI总结笔记
21+
22+
1. 错误处理机制
23+
你学习了三种终止函数执行的错误处理机制,以及一种处理外部调用的容错机制:
24+
25+
require: 用于验证用户输入或状态条件。当条件不满足时,它会阻止交易并返还未使用的 Gas。
26+
27+
revert: 与 require 类似,但更适用于复杂的逻辑流。它允许你在任何地方抛出错误并返还未使用的 Gas。
28+
29+
assert: 用于检查合约中的内部错误和不变量。如果 assert 触发,说明合约本身存在 Bug,它会消耗掉所有剩余的 Gas,以明确标记这是一个严重的内部问题。
30+
31+
try-catch: 是一种柔性处理机制,专门用于处理外部合约调用可能出现的错误,而不会终止整个交易。
32+
33+
2. 模块化编程和代码组织
34+
你学习了如何通过不同的方式组织和复用代码,让你的合约变得更具可读性、可维护性和可扩展性:
35+
36+
library: 一种特殊的合约,用于存放无状态的、可重用的函数。它不存储数据,因此部署和调用成本更低。
37+
38+
using...for...: 一个强大的语法,可以将库中的函数附加到特定的数据类型上,使其像面向对象语言的方法一样被调用,例如 x.square()。
39+
40+
import: 用于在一个合约中引入其他合约或库,这是组织大型项目和管理依赖关系的基础。
41+
42+
继承(Inheritance): 一种“家族关系”,让子合约可以获得父合约的所有非 private 成员。
43+
44+
在继承时,需要在子合约的构造函数中初始化父合约的构造函数,以确保状态变量被正确设置。
45+
46+
你可以使用 virtual 关键字标记父合约中的函数为可重写的,然后在子合约中使用 override 关键字来覆盖它,以实现或扩展新功能。
47+
1848
# 2025-08-19
1949

2050
学习。太棒了!

0 commit comments

Comments
 (0)