Skip to content
This repository was archived by the owner on Aug 18, 2025. It is now read-only.

Commit fb46a46

Browse files
committed
新增示例程序,展示多种Switch语句的使用场景,包括菜单处理、状态处理、成绩等级、嵌套Switch等,进一步增强了语言的表达能力和实用性。
1 parent db9addc commit fb46a46

File tree

1 file changed

+209
-0
lines changed

1 file changed

+209
-0
lines changed

switch_simple_demo.cn

Lines changed: 209 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,209 @@
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

Comments
 (0)