2017-01-23 6 views
4

Ich lese this Code und in Zeile 97 fand ich den folgenden Code:Leere Aussage in Matlab Schalter/Fall?

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

Ich habe noch nie leer Aussagen gesehen (nach documentation). Was heißt das?

"Wenn lower(opts.color) entweder rgb oder opponent dann tun ..."

oder

"Wenn lower(opts.color)rgb nichts zu tun ist, und wenn es opponent... zu tun ist"?

Antwort

8

Wenn der Block case leer ist, wird für diesen speziellen Fall nichts ausgeführt. Wenn also opt.colors'rgb' ist, wird keine Aktion ausgeführt.

Der Grund, dass der Autor hat es sogar als case enthalten gestört ist, weil, wenn sie nicht hatte, der Code innerhalb des otherwise Block (die opts.color zu 'hsv' setzt, da die mitgelieferten Farbraum nicht/gültig anerkannt wurde) würde ausgeführt werden, wenn opt.colors'rgb' war, was offensichtlich unerwünschtes Verhalten ist.

Der Block ist das funktionale Äquivalent von

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

Die Syntax für eine case Block, der die Verwendung eines cell array for the case expression mehreren Werten entspricht erfordert.

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

Vielen Dank! :) – justHelloWorld