1+ using lib <io>;
2+
3+ ns calculator {
4+ fn add(a : int, b : int) : int {
5+ return a + b;
6+ };
7+
8+ fn multiply(a : int, b : int) : int {
9+ return a * b;
10+ };
11+ };
12+
13+ fn processMenu(choice : int) : void {
14+ using ns calculator;
15+
16+ std::println("处理菜单选择");
17+
18+ switch (choice) {
19+ case 1 {
20+ result : int = add(10, 5);
21+ std::println("加法结果: 15");
22+ break;
23+ };
24+ case 2 {
25+ std::println("减法选项");
26+ break;
27+ };
28+ case 3 {
29+ result : int = multiply(7, 3);
30+ std::println("乘法结果: 21");
31+ break;
32+ };
33+ default {
34+ std::println("无效选择");
35+ };
36+ };
37+ };
38+
39+ fn processStatus(status : string) : void {
40+ std::println("处理状态");
41+
42+ switch (status) {
43+ case "success" {
44+ std::println("操作成功");
45+ break;
46+ };
47+ case "error" {
48+ std::println("操作失败");
49+ break;
50+ };
51+ case "warning" {
52+ std::println("警告信息");
53+ break;
54+ };
55+ default {
56+ std::println("未知状态");
57+ };
58+ };
59+ };
60+
61+ fn demonstrateFallThrough(value : int) : void {
62+ std::println("Fall-through 演示");
63+
64+ switch (value) {
65+ case 1 {
66+ std::println("Case 1");
67+ };
68+ case 2 {
69+ std::println("Case 2 (fall-through)");
70+ };
71+ case 3 {
72+ std::println("Case 3 (fall-through)");
73+ break;
74+ };
75+ default {
76+ std::println("Default case");
77+ };
78+ };
79+ };
80+
81+ fn processGrade(grade : int) : string {
82+ result : string = "";
83+
84+ switch (grade) {
85+ case 90 {
86+ result = "A";
87+ break;
88+ };
89+ case 80 {
90+ result = "B";
91+ break;
92+ };
93+ case 70 {
94+ result = "C";
95+ break;
96+ };
97+ default {
98+ result = "F";
99+ };
100+ };
101+
102+ return result;
103+ };
104+
105+ fn nestedSwitchDemo(category : int, subcategory : int) : void {
106+ std::println("嵌套 Switch 演示");
107+
108+ switch (category) {
109+ case 1 {
110+ std::println("电子产品类别");
111+
112+ switch (subcategory) {
113+ case 1 {
114+ std::println("手机");
115+ break;
116+ };
117+ case 2 {
118+ std::println("电脑");
119+ break;
120+ };
121+ default {
122+ std::println("其他电子产品");
123+ };
124+ };
125+ break;
126+ };
127+ case 2 {
128+ std::println("服装类别");
129+
130+ switch (subcategory) {
131+ case 1 {
132+ std::println("上衣");
133+ break;
134+ };
135+ case 2 {
136+ std::println("裤子");
137+ break;
138+ };
139+ default {
140+ std::println("其他服装");
141+ };
142+ };
143+ break;
144+ };
145+ default {
146+ std::println("未知类别");
147+ };
148+ };
149+ };
150+
151+ fn main() : int {
152+ std::println("=== Switch 语句演示 ===");
153+
154+ // 示例 1: 基本菜单处理
155+ std::println("1. 菜单处理:");
156+ processMenu(1);
157+ processMenu(2);
158+ processMenu(99);
159+ std::println("");
160+
161+ // 示例 2: 字符串状态处理
162+ std::println("2. 状态处理:");
163+ processStatus("success");
164+ processStatus("error");
165+ processStatus("unknown");
166+ std::println("");
167+
168+ // 示例 3: Fall-through 演示
169+ std::println("3. Fall-through 演示:");
170+ demonstrateFallThrough(1);
171+ std::println("---");
172+ demonstrateFallThrough(4);
173+ std::println("");
174+
175+ // 示例 4: 返回值处理
176+ std::println("4. 成绩处理:");
177+ grade1 : string = processGrade(90);
178+ std::println("90分等级: A");
179+ grade2 : string = processGrade(75);
180+ std::println("75分等级: C");
181+ std::println("");
182+
183+ // 示例 5: 嵌套 Switch
184+ std::println("5. 嵌套 Switch:");
185+ nestedSwitchDemo(1, 1);
186+ nestedSwitchDemo(2, 2);
187+ nestedSwitchDemo(3, 1);
188+ std::println("");
189+
190+ // 示例 6: 布尔值 Switch
191+ std::println("6. 布尔值 Switch:");
192+ isActive : bool = true;
193+
194+ switch (isActive) {
195+ case true {
196+ std::println("系统激活");
197+ break;
198+ };
199+ case false {
200+ std::println("系统未激活");
201+ break;
202+ };
203+ };
204+
205+ std::println("");
206+ std::println("=== 演示完成 ===");
207+
208+ return 0;
209+ };
0 commit comments