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做..."?
如果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)