File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff 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学习。太棒了!
You can’t perform that action at this time.
0 commit comments