|
1 | 1 | # CodeNothing 更新日志 |
2 | 2 |
|
| 3 | +## [v0.5.2] - 2025-07-28 |
| 4 | +### 🎯 重大新功能:函数指针完整实现 (Function Pointers) |
| 5 | + |
| 6 | +#### 🚀 核心特性 |
| 7 | +- **完整的函数指针语法支持** |
| 8 | + - 函数指针类型声明:`mathFunc : *fn(int, int) : int;` |
| 9 | + - 函数指针赋值:`mathFunc = addNumbers;` |
| 10 | + - 函数指针调用:`result = mathFunc(10, 5);` |
| 11 | + - 可选函数指针:`optFunc : ?*fn(int) : string;` |
| 12 | + |
| 13 | +- **函数指针方法** |
| 14 | + - `toString()` - 获取函数指针的字符串表示 |
| 15 | + - `getName()` - 获取函数名 |
| 16 | + - `getParamCount()` - 获取参数数量 |
| 17 | + - `getReturnType()` - 获取返回类型 |
| 18 | + - `isNull()` - 检查是否为空 |
| 19 | + - `isLambda()` - 检查是否为Lambda函数 |
| 20 | + |
| 21 | +- **高阶函数支持** |
| 22 | + - 函数指针作为参数传递 |
| 23 | + - 函数指针作为返回值 |
| 24 | + - 运行时函数选择和调用 |
| 25 | + |
| 26 | +#### 技术实现 |
| 27 | +- **AST扩展**: 新增 `FunctionPointer` 类型和相关表达式 |
| 28 | +- **类型系统**: 完整的函数指针类型检查和匹配 |
| 29 | +- **语法解析**: 支持 `*fn(参数类型...) : 返回类型` 语法 |
| 30 | +- **运行时调用**: 真实的函数指针调用机制 |
| 31 | +- **内存管理**: 函数指针的创建、赋值和销毁 |
| 32 | + |
| 33 | +#### 示例代码 |
| 34 | +```codenothing |
| 35 | +// 函数定义 |
| 36 | +fn add(a : int, b : int) : int { |
| 37 | + return a + b; |
| 38 | +}; |
| 39 | +
|
| 40 | +fn multiply(a : int, b : int) : int { |
| 41 | + return a * b; |
| 42 | +}; |
| 43 | +
|
| 44 | +// 函数指针使用 |
| 45 | +mathFunc : *fn(int, int) : int = add; |
| 46 | +result1 : int = mathFunc(10, 5); // 15 |
| 47 | +
|
| 48 | +mathFunc = multiply; |
| 49 | +result2 : int = mathFunc(10, 5); // 50 |
| 50 | +
|
| 51 | +// 高阶函数 |
| 52 | +fn calculate(a : int, b : int, op : *fn(int, int) : int) : int { |
| 53 | + return op(a, b); |
| 54 | +}; |
| 55 | +
|
| 56 | +result3 : int = calculate(10, 5, add); // 15 |
| 57 | +``` |
| 58 | + |
| 59 | +--- |
| 60 | + |
3 | 61 | ## [v0.5.1] - 2025-07-28 |
4 | 62 | ### 🔧 跨平台兼容性修复 |
5 | 63 |
|
@@ -140,7 +198,7 @@ derefStatus : Status = *statusPtr; |
140 | 198 | #### 已知限制 |
141 | 199 | - ✅ ~~暂不支持指针算术运算(如ptr + 1)~~ **已实现** |
142 | 200 | - ✅ ~~暂不支持多级指针(**int)~~ **已实现** |
143 | | -- 🔄 函数指针(概念支持,完整实现计划在v0.5.x) |
| 201 | +- ✅ ~~函数指针~~ **已在v0.5.2实现** |
144 | 202 | - ✅ ~~`(*ptr).method()` 语法暂不支持~~ **已实现** |
145 | 203 | - 指针递增递减操作符(++ptr, ptr++)计划在v0.5.x实现 |
146 | 204 | - 智能指针(shared_ptr, unique_ptr)计划在v0.6.0实现 |
|
0 commit comments