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,70 @@ timezone: UTC+8
1515## Notes
1616
1717<!-- Content_START -->
18+ # 2025-08-19
19+
20+ Solidity 学习笔记(函数与返回值)
21+ 一、函数基础
22+
23+ 函数定义格式:
24+ function <name >(<parameters >) {internal|external|public|private} [ pure|view|payable] [ returns (<types >)]
25+
26+ 可见性:
27+
28+ public:内部外部都可访问
29+
30+ private:仅合约内部访问,子合约不可用
31+
32+ external:仅外部调用(内部需用this.f()调用)
33+
34+ internal:仅内部和子合约可访问
35+
36+ 状态变量默认 internal,public 变量会自动生成 getter。
37+
38+ 二、pure 与 view
39+
40+ pure:不能读写状态变量,只能处理输入参数。
41+
42+ view:能读但不能写状态变量。
43+
44+ 默认函数(无 pure/view):可自由读写状态变量。
45+
46+ 设计目的:节省 gas。调用 pure/view 函数不消耗 gas。
47+
48+ 三、其他函数关键字
49+
50+ payable:函数可接收 ETH。
51+
52+ 例子:
53+
54+ pure:计算输入参数结果,不依赖链上状态。
55+
56+ view:读取状态变量但不修改。
57+
58+ internal/external:控制调用范围。
59+
60+ payable:允许转账并返回合约余额。
61+
62+ 四、函数输出
63+
64+ return 与 returns:
65+
66+ returns:声明返回类型/变量名(写在函数头部)。
67+
68+ return:函数体内实际返回值。
69+
70+ 返回方式:
71+
72+ 多个返回值:return (a, b, c)
73+
74+ 命名式返回:returns(uint x, bool y) → 在函数体中赋值即可自动返回。
75+
76+ 解构式赋值:支持接收全部或部分返回值,如
77+
78+ 全部:(x, y, z) = f()
79+
80+ 部分:(, y, ) = f()
81+
1882# 2025-08-18
1983
2084继续学习solidity的语法,今天涉及到函数和函数输出部分。和之前一样在Remix的测试网上对几个简单的函数功能部署测试。也翻了下之前的web3书籍资料,构思了一下web3技术生态和农业生产,农业经济的结合,给出的几个实例是碳汇交易上链,和营养学食品安全这些问题,可以和区块链的不可篡改特性想结合。至于之前构思的开发一个智能合约用于管理农业或者农村中的公共资源/财产的管理问题,则还缺少一个具体的想法,做怎样的一个功能平台实现什么功能,要用什么手段在平台上保留什么信息或者使用什么功能让人们能够进行多轮的协商协调,中间是否要引入机制设计和博弈论的一些理念来让不信任的人达成一些条款?仍在探索中。
You can’t perform that action at this time.
0 commit comments