不间断的开关语句

Cap*_*rog 2 matlab break switch-statement

据我所知,在MATLAB中,没有必要(因为在C++中)使用'break;'来结束switch语句的每个'case'.一旦找到第一个成功案例,该声明就会停止评估.

但是,我有以下情况:

switch variable
    case {0, 1}
        % Action A
    case {0, 2}
        % Action B
end
Run Code Online (Sandbox Code Playgroud)

在上述情况下,如果'variable'等于0,则只有Action A将完成.在变量= 0的情况下,我想要完成两个动作.我可以为0创建一个单独的case来激活Action A和B,但这似乎不是有效的编程,因为我必须复制这两个动作.

我确信必须有一个简单的方法来做到这一点,但我仍然是MATLAB的相对新手,所以我想知道我能做些什么来保持我的代码整洁?

问候

Eit*_*n T 6

switch遗憾的是,MATLAB 语句没有提供直通逻辑的灵活性,因此在这种情况下您将无法使用它.

你可以switch用连续的if语句替换(附有一些注释),这就是你得到的:

%# Switch variable
if (variable == 0 || variable == 1)  %# case {0, 1}
   %# Action A
end
if (variable == 0 || variable == 2)  %# case {0, 2}
   %# Action B
end
Run Code Online (Sandbox Code Playgroud)

在我看来它仍然看起来很优雅.


Pet*_*ter 5

代码长度不一定与可读性或效率相同.我认为正确的答案是丢弃开关并写下你的意思:

if((variable == 0) || (variable == 1))
  ActionA();
end

if((variable == 0) || (variable == 2))
  ActionB();
end
Run Code Online (Sandbox Code Playgroud)