|
1 | 1 | # CodeNothing 更新日志 |
2 | 2 |
|
| 3 | +## [v0.4.7] - 2025-07-27 |
| 4 | +### 🎯 重大新功能:枚举类型 (Enum Types) |
| 5 | + |
| 6 | +#### 核心特性 |
| 7 | +- **完整的枚举语法支持** |
| 8 | + - 基础枚举:`enum Color { Red, Green, Blue };` |
| 9 | + - 带参数枚举:`enum Result { Success(string, int), Error(string) };` |
| 10 | + - 复杂枚举:支持多达10个不同类型参数的枚举变体 |
| 11 | + - 混合类型枚举:同一枚举中的不同变体可有不同参数 |
| 12 | + |
| 13 | +- **类型安全保障** |
| 14 | + - 严格的运行时类型检查和参数验证 |
| 15 | + - 智能类型推断,自动识别enum类型 |
| 16 | + - 函数参数和返回值的enum类型验证 |
| 17 | + - 枚举变量赋值的类型安全检查 |
| 18 | + |
| 19 | +- **方法调用支持** |
| 20 | + - `toString()`:获取枚举的字符串表示 |
| 21 | + - `getEnumName()`:获取枚举类型名称 |
| 22 | + - `getVariantName()`:获取枚举变体名称 |
| 23 | + - `length()`:获取枚举字段数量 |
| 24 | + |
| 25 | +- **字符串操作集成** |
| 26 | + - 支持枚举与字符串的连接操作(`+` 运算符) |
| 27 | + - 新增字符串方法:`startsWith()`, `endsWith()`, `contains()` |
| 28 | + - 完整的字符串比较和处理支持 |
| 29 | + |
| 30 | +#### 语法示例 |
| 31 | +```codenothing |
| 32 | +// 基础枚举定义 |
| 33 | +enum Status { Active, Inactive, Pending }; |
| 34 | +
|
| 35 | +// 带参数的枚举 |
| 36 | +enum ApiResponse { |
| 37 | + Ok(int, string), |
| 38 | + Error(string), |
| 39 | + NotFound(string) |
| 40 | +}; |
| 41 | +
|
| 42 | +// 枚举使用 |
| 43 | +status : Status = Status::Active; |
| 44 | +response : ApiResponse = ApiResponse::Ok(200, "成功"); |
| 45 | +
|
| 46 | +// 枚举方法调用 |
| 47 | +statusName : string = status.getVariantName(); // "Active" |
| 48 | +responseStr : string = response.toString(); // "ApiResponse::Ok(200, 成功)" |
| 49 | +``` |
| 50 | + |
| 51 | +#### 技术实现 |
| 52 | +- **AST扩展**:新增`Enum`、`EnumVariant`、`EnumField`结构体和相关表达式类型 |
| 53 | +- **解析器增强**:新增`enum_parser.rs`模块,支持完整枚举语法解析 |
| 54 | +- **解释器改进**:新增`EnumInstance`值类型,实现枚举创建、访问和方法调用 |
| 55 | +- **类型系统集成**:扩展类型检查机制,支持enum类型的智能匹配 |
| 56 | + |
| 57 | +#### 测试验证 |
| 58 | +- ✅ 基础功能测试:简单枚举定义和使用 |
| 59 | +- ✅ 复杂场景测试:JSON处理、HTTP状态、游戏状态机等实际应用 |
| 60 | +- ✅ 性能测试:1000+枚举实例创建,复杂参数处理 |
| 61 | +- ✅ 边界情况测试:空值、特殊字符、长字符串等 |
| 62 | +- ✅ 业务逻辑验证:用户认证、API响应、状态转换等场景 |
| 63 | + |
| 64 | +#### 向后兼容性 |
| 65 | +- ✅ 完全向后兼容,不影响现有代码 |
| 66 | +- ✅ 与类、接口、命名空间等特性无缝集成 |
| 67 | +- ✅ 不破坏现有API和语法结构 |
| 68 | + |
| 69 | +#### 已知限制 |
| 70 | +- 暂不支持负数字面量作为枚举参数 |
| 71 | +- 暂不支持模式匹配语法(计划在后续版本实现) |
| 72 | +- 枚举字段暂不支持命名字段(仅支持位置参数) |
| 73 | + |
| 74 | +#### 示例文件 |
| 75 | +- `examples/enum_test.cn` - 基础功能演示 |
| 76 | +- `examples/enum_complex_test.cn` - 复杂场景应用 |
| 77 | +- `examples/enum_final_test.cn` - 综合功能测试 |
| 78 | + |
| 79 | +--- |
| 80 | + |
3 | 81 | ## [v0.4.6] - 2025-07-26 |
4 | 82 | ### 🚀 重大新功能:默认参数值与原始字符串字面量 |
5 | 83 | - **默认参数值 (Default Parameter Values)** |
|
0 commit comments