德尔福在案例陈述中落空

时间:2016-07-21 10:07:50

标签: delphi

在C中,您可以执行类似

的操作
switch(x) {
  case 'a':
  case 'b': 
    printf("something");
  break;
  case 'c': 
    printf("else");
  break;
}

在Delphi中我尝试过两次

 case x of
   'a': 
   'b': writeln('something');
   'c': writeln('else');
 end;

 case x of
   ['a','b']: writeln('something');
   'c': writeln('else');
 end;

但他们两个都不起作用。

我虽然有不同的解决方案,例如写一个程序并将其称为'a'和'b',但我想知道是否有更好的解决方案。 我也可以使用goto,像这样:

 case x of
   'a': goto labelCaseB;
   'b': begin
          labelCaseB:
          writeln('something');
        end;
   'c': writeln('else');
 end;

它完美无缺,但在Delphi语言的case语句中,什么是“标准”解决方案?

当然,我的实际情况要复杂得多:在这个例子中,我会使用if-else;)

1 个答案:

答案 0 :(得分:10)

Delphi在案例陈述中没有落后。这是C和Delphi之间的主要区别之一。但在你的特殊情况下(抱怨双关语)你可以写

 case x of
   'a','b': begin
          writeln('something');
        end;
   'c': writeln('else');
 end;