如果我们想要一个switch语句,对于每种情况,我们需要运行一些指令然后打破我们会这样的事情:
switch (condition) {
case (opt1):
// do stuff
break;
case (opt2):
// do stuff
break;
case (opt3):
// do stuff
break;
// ...
default:
// do stuff
}
是否有可能有一个独占开关,没有通过,默认情况下每个选项应该中断,而不必明确说明中断指令?如果不是在C ++中,是否有其他命令式语言可以使用这样的功能?
答案 0 :(得分:3)
C#也需要break
,但如果你没有说出来,就会对你大喊大叫。您需要goto label;
明确地通过。
在C ++中,没有办法本机地执行此操作(当然,除了可怕的宏之外)。但是,Clang有-Wimplicit-fallthrough
警告。然后,您可以插入[[clang::fallthrough]];
以使警告静音以进行深思熟虑的坠机。
文档:http://clang.llvm.org/docs/AttributeReference.html#fallthrough-clang-fallthrough
答案 1 :(得分:1)
我不喜欢在开关中包含break语句,因此我使用将开关包装在闭包中并从每种情况返回的模式。例如:
auto result = [&] {
switch(enum_val) {
case A:
return Foo();
case B:
return Bar();
}
}();
答案 2 :(得分:0)
Golang中没有“自动摔倒”。 https://golang.org/doc/effective_go.html#switch