Switch语句是一种控制结构,它允许根据变量的值执行不同的代码块。在Dart中,switch语句可以用于处理多种情况,使得代码更加简洁和易于理解。
Switch语句的基本结构
// www.javascriptcn.com code example
void main() {
int number = 3;
switch (number) {
case 1:
print("数字是1");
break;
case 2:
print("数字是2");
break;
case 3:
print("数字是3");
break;
default:
print("数字不是1, 2, 或者3");
}
}在上述代码中,number变量被用作switch表达式的值。根据number的值,相应的case分支会被执行。如果number等于1,则输出“数字是1”;如果number等于2,则输出“数字是2”;如果number等于3,则输出“数字是3”。如果没有匹配的case,则会执行default分支,输出“数字不是1, 2, 或者3”。
多条件分支
Switch语句不仅可以处理单个条件,还可以处理多个条件。这可以通过在case后面添加多个值来实现:
// www.javascriptcn.com code example
void main() {
int number = 3;
switch (number) {
case 1:
case 2:
case 3:
print("数字是1, 2, 或者3");
break;
default:
print("数字不是1, 2, 或者3");
}
}在这个例子中,如果number等于1、2或3中的任何一个,都会执行同一个分支。如果number不等于这些值,则会执行default分支。
匹配多个条件
Dart还支持使用多个条件进行匹配,这可以通过在case后面添加多个值来实现。例如:
// www.javascriptcn.com code example
void main() {
String dayOfWeek = "星期一";
switch (dayOfWeek) {
case "星期一":
case "星期三":
case "星期五":
print("今天是工作日");
break;
case "星期六":
case "星期日":
print("今天是周末");
break;
default:
print("未知的日期");
}
}在这个例子中,如果dayOfWeek等于"星期一"、"星期三"或"星期五"中的任何一个,都会执行第一个分支;如果等于"星期六"或"星期日"中的任何一个,都会执行第二个分支;否则,将执行default分支。
使用表达式进行匹配
除了直接比较变量的值外,Dart还允许在case后面使用表达式进行匹配。例如:
// www.javascriptcn.com code example
void main() {
int number = 5;
switch (number % 2) {
case 0:
print("数字是偶数");
break;
case 1:
print("数字是奇数");
break;
default:
print("未知的数字");
}
}在这个例子中,我们使用了number % 2作为switch表达式。如果结果为0,则说明number是偶数;如果结果为1,则说明number是奇数。
包含其他类型的case
除了整型和字符串之外,Dart还支持其他类型的case。例如,你可以使用枚举类型进行匹配:
// www.javascriptcn.com code example
enum Color { 红色, 绿色, 蓝色 }
void main() {
Color color = Color.绿色;
switch (color) {
case Color.红色:
print("颜色是红色");
break;
case Color.绿色:
print("颜色是绿色");
break;
case Color.蓝色:
print("颜色是蓝色");
break;
}
}在这个例子中,我们定义了一个枚举类型Color,然后使用它来进行case匹配。如果color是红色,则输出“颜色是红色”;如果是绿色,则输出“颜色是绿色”;如果是蓝色,则输出“颜色是蓝色”。
包含表达式的结果
在某些情况下,你可能希望根据表达式的结果来决定执行哪个分支。这时可以使用when关键字来实现:
// www.javascriptcn.com code example
void main() {
int number = 10;
switch (number) {
case var n when n > 0 && n < 10:
print("数字在0到10之间");
break;
case var n when n >= 10 && n < 20:
print("数字在10到20之间");
break;
default:
print("数字不在0到20之间");
}
}在这个例子中,我们使用了when关键字来定义一个表达式,这个表达式决定了哪个case分支被执行。如果number大于0且小于10,则执行第一个分支;如果number大于等于10且小于20,则执行第二个分支;否则,执行default分支。
结束语
通过本章的学习,你应该已经掌握了Dart中switch语句的基本用法和一些高级技巧。掌握switch语句能够帮助你在处理多种情况时编写更简洁和高效的代码。在实际编程过程中,灵活运用switch语句可以使你的代码更具可读性和可维护性。