当我试图处理特殊情况时,我在使用switch语句时遇到问题 . 例如,我有3个案例:A,B,C .
-
对于A,我想做statement_1和statement_3 .
-
for B,我想做statement_2和statement_3 .
-
对于C,我什么都不想做
如果我使用if-else语句,它将如下所示:
if ( not C){
do statement_3
if B
do statement 2
else if A
do statement 1
}
如果我想使用switch语句做同样的事情,我有一些麻烦 .
switch (variable){
case A: do statement_1
case B: do statement_2
// how to do statement 3 here?
}
我试图避免重复的代码 . 所以我在想如何使代码尽可能简单 .
UPDATE 1:
-
使我的代码/问题更加清晰,我只想让我的代码尽可能简单/清晰,这就是为什么我想使用switch语句而不是if-else . 另外,我听说switch语句通常比if-else更快 . (虽然我不是100%肯定) .
-
我想使用switch-case,因为案例A,B,C是枚举类型 . 它们不是变数 . 对此感到抱歉 .
-
每个语句都超过10行代码 . 这就是为什么我不想做以下事情:
switch (enum variable) {
case A:
statement1
statement3
break;
case B:
statement2
statement3
break;
}
8 回答
你可以这样做:
我经常发现引入
enum
s增加了清晰度 . 在这里,我想每个enum
是一个可以通过许多过程解决的问题:请注意,您可以使用其他问题的解决方案来处理某些问题,这样可以获得额外的好处(请参阅我的
D
enum
) .为什么不将开关嵌套到if语句中?这种方式没有重复代码 .
或者使用if语句和switch?
在这里你必须以这种方式使用
if statement
,因为在switch
中通常也有default
值 .我建议准确定义应该执行的staments:
for Update-3:
为这10行创建方法:
如果你总是执行statement_3,除了案例C,你可以在编写时使用if / else-blocks .
但在我的诚实意见中:如果你有少量的案例,确切地定义在哪种情况下必须做什么 . 对别人来说更容易阅读
如果一个案例有超过2-3个语句,那么从可读性和清晰代码的角度来看,它们可以作为单独的方法提取它们:
A break can save a lot of execution time because it "ignores" the execution of all the rest of the code in the switch block
Output is 10