matlab - Matlab 开关/案例中的空语句?

标签 matlab switch-statement

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

switch lower(opts.color)
  case 'rgb'
  case 'opponent'
  ...

我从未见过空语句(根据 documentation )。这是什么意思?

“如果 lower(opts.color)rgbopponent 则执行 ...

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

最佳答案

如果 case block 为空,则不会对该特定情况执行任何操作。因此,如果 opt.colors'rgb',则不采取任何操作。

作者甚至不厌其烦地将其作为 case 包括在内的原因是,如果他们没有,otherwise block 中的代码(设置 opts.color'hsv' 因为提供的色彩空间未被识别/有效)如果 opt.colors'rgb 将被执行' 这显然是不受欢迎的行为。

该 block 在功能上等同于

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

匹配多个值的 case block 的语法需要使用 cell array for the case expression .

switch lower(opts.color)
    case {'rgb', 'opponent'}
        ...
end

关于matlab - Matlab 开关/案例中的空语句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41812718/

相关文章:

javascript - switch 语句中的 JS 逻辑运算符 - OR、AND ('||' 、 '&&' )

java - Maven Java 不会对非详尽开关发出警告

C 增加状态的开关计数

java - java 程序中的素数切换有意外的输出

image - 图像之间的欧氏距离

MATLAB:在两个矩阵上应用函数的有效(矢量化)方法?

matlab - Matlab 中的二维 body 变换和旋转

memory - Matlab:调用函数后空闲内存丢失

java - 现在使用 if else 语句时出现不兼容错误

matlab - 如何将灰度图像转换为n×3数组