- 实现 as 类型转换运算符、修复 &&/|| 短路求值 bug。 - 在 splc1.spl 中实现 Vec/Map/Emit 基础库(~50 个方法)。 - 修复实例方法调用中 self 参数被错误丢弃的 bug。
30 lines
568 B
Plaintext
30 lines
568 B
Plaintext
/* ===== 模块5:复合类型 =====
|
||
* test11_enum — 枚举
|
||
* 难度:3/5
|
||
* 验证点:enum 定义、简单枚举值、带数据枚举变体
|
||
*/
|
||
@extern(vm) fn vm_printf(fmt: *u8, ...) void;
|
||
|
||
type Color = enum {
|
||
Red,
|
||
Green,
|
||
Blue,
|
||
}
|
||
|
||
type Expr = enum {
|
||
val: i32,
|
||
tag: Tag,
|
||
|
||
type Tag = enum {
|
||
TagA,
|
||
TagB,
|
||
TagC,
|
||
}
|
||
}
|
||
|
||
fn main() i32 {
|
||
vm_printf("enum values: %d %d %d\n", Color.Red, Color.Green, Color.Blue);
|
||
vm_printf("enum values: %d %d %d\n", Expr.Tag.TagA, Expr.Tag.TagB, Expr.Tag.TagC);
|
||
ret 0;
|
||
}
|