在太多语言中它的语法相同:
switch (someValue) {
case OPTION_ONE:
case OPTION_LIKE_ONE:
case OPTION_ONE_SIMILAR:
doSomeStuff1();
break; // EXIT the switch
case OPTION_TWO_WITH_PRE_ACTION:
doPreActionStuff2();
// the default is to CONTINUE to next case
case OPTION_TWO:
doSomeStuff2();
break; // EXIT the switch
case OPTION_THREE:
doSomeStuff3();
break; // EXIT the switch
}
现在,你所知道的 break
语句是必需的,因为 switch
会继续下case
什么时候break
语句丢失。我们有一个例子 OPTION_LIKE_ONE
, OPTION_ONE_SIMILAR
和 OPTION_TWO_WITH_PRE_ACTION
.问题是我们很少需要这种“跳到下一个案例”。我们经常把 break 放在 case
的末尾.
初学者很容易忘记它。我的一位 C 老师甚至向我们解释它,好像它是 C 语言中的一个错误(不想谈论它:)
我想问一下是否还有其他我不知道(或忘记)的语言可以像这样处理 switch/case:
switch (someValue) {
case OPTION_ONE: continue; // CONTINUE to next case
case OPTION_LIKE_ONE: continue; // CONTINUE to next case
case OPTION_ONE_SIMILAR:
doSomeStuff1();
// the default is to EXIT the switch
case OPTION_TWO_WITH_PRE_ACTION:
doPreActionStuff2();
continue; // CONTINUE to next case
case OPTION_TWO:
doSomeStuff2();
// the default is to EXIT the switch
case OPTION_THREE:
doSomeStuff3();
// the default is to EXIT the switch
}
第二个问题:为什么我们在 C 中使用当前的 break 方法有什么历史意义吗?也许继续下一个 case 比我们现在使用的更频繁?
最佳答案
来自 this文章,我可以列举一些不需要类似break
语句的语言:
- Ada(无失败)
- Eiffel(无漏电)
- Pascal(无 fallthrough)
- Go -
fallthrough
- Perl -
继续
- Ruby(无 fallthrough)
- VB、VBA、VBS、VB.NET(无 fallthrough)
- 由其他人继续...
你的第二个问题很有趣。假设只有 C,我相信这个决定保持了语言的凝聚力。由于 break
是一个跳跃,因此必须显式编写。
关于java - 有没有一种编程语言可以更好地处理 switch 的 break 语句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3014668/