Matlab开关/ case中的空语句?

jus*_*rld 5 matlab switch-statement

我正在阅读代码,在第97行,我发现了以下代码:

switch lower(opts.color)
  case 'rgb'
  case 'opponent'
  ...
Run Code Online (Sandbox Code Playgroud)

我从未见过空话(根据文件).这是什么意思?

"如果lower(opts.color)rgb或者opponent然后做..."

要么

"如果lower(opts.color)rgb什么也不做,如果它opponent..."?

Sue*_*ver 9

如果case块为空,则不对该特定情况执行任何操作.所以,如果opt.colors'rgb'不采取任何行动.

究其原因,提交人甚至费心包括它作为case是因为如果他们没有,则内的代码otherwise块(它设置opts.color'hsv'如果因为所供给的颜色空间没有被识别的/有效的)将被执行的opt.colors'rgb',这显然是不希望行为.

该块是功能相当于

if ~strcmpi(opts.color, 'rgb')
    switch lower(opts.color)
        case 'opponent'
            % Do stuff
        case 'hsv'
            % Do other stuff
        otherwise
            % Throw warning
    end
end
Run Code Online (Sandbox Code Playgroud)

case匹配多个值的块的语法需要使用case表达式单元数组.

switch lower(opts.color)
    case {'rgb', 'opponent'}
        ...
end
Run Code Online (Sandbox Code Playgroud)