获取开关盒以调用开关盒,而不是遍历所有开关盒

时间:2018-08-30 21:17:01

标签: matlab switch-statement

下面您可以看到我的代码。运行此命令时,我会从所有三个switch语句中得到答案。我只希望其中一个switch语句有一个答案,而其他两个则可以忽略。我该怎么做?

 RuntimeTypeAdapterFactory<parentGif> AbstractGifTypeAdapterFactory = RuntimeTypeAdapterFactory
                .of(ParentGifParseImpl.class).registerSubtype(SubGifParseImpl.class);

 Gson gson = new GsonBuilder().registerTypeAdapterFactory(AbstractGifTypeAdapterFactory).create();

1 个答案:

答案 0 :(得分:3)

我认为您的意思是根据GrashofNGRASHSpecGrashof中的哪一个为真来选择一种切换情​​况。您需要为此使用if语句。

您对switch的使用是不正确的,switch的参数是一个变量,各种情况是该变量的可能值。我建议您read the documentation

这是您打算写的:

if Grashof
  switch S
    case a
      disp("GCCC")
    case b
      disp("GCRR")
    case c
      disp("GRCR")
    case d
      disp("GRRC")
    otherwise
      return
  end
elseif NGRASH
  switch L
    case a
      disp("RRR1")
    case b
      disp("RRR1")
    case c
      disp("RRR3")
    case d
      disp("RRR4")
    otherwise
      return
  end
else % SpecGrashof must be true here, no need to test for it
  switch S
    case a
      disp("SCCC")
    case b
      disp("SCRR")
    case c
      disp("SRCR")
    case d
       disp("SRRC")
    otherwise
       return
  end
end

但是考虑到您对这三种情况的定义:

Grashof = L+S < sum(Lengths)-(S+L); %This will direct to 'Grashof' cases
NGRASH = L+S > sum(Lengths)-(S+L); %This will direct to 'Non-grashof' cases
SpecGrashof = L+S == sum(Lengths)-(S+L); %This will direct to 'Special Grashof' cases

您还可以打开以下值的符号:

K = (L+S) - (sum(Lengths)-(S+L));
switch sign(K)
  case -1 % Grashof cases
    % ...
  case 1 % NGRASH cases
    % ...
  case 0 % Special Grashof cases
    % ...
end

在每种情况下,您都应如上所述将switch语句放在SL上。