【问题标题】:How to make multiple variations on case如何对案例进行多种变化
【发布时间】:2020-07-29 18:40:10
【问题描述】:

我正在使用delphi运行以下代码:

if (number> 8) and (number< 10) then
    message:= 'first option'
else if (number> 11) and (number< 17) then
    message:= 'second option'
else if (number> 18) then
    message:= 'third option';

我需要做确切的代码,但使用case,我正在尝试但没有找到任何解释如何做的内容:

case idade of
(case > 8 and case< 10) : message:= 'first option';
(case > 11 and case< 17) : message:= 'second option';
(case > 18) : message:= 'third option';
end;

我也尝试搜索有关案例的问题,但我想我也没有找到找到此答案的正确方法。

【问题讨论】:

    标签: delphi delphi-6


    【解决方案1】:

    使用case 语句可以得到最接近的结果如下所示:

    case idade of
      9: message := 'first option';
      12..16: message := 'second option';
    else
      if idade > 18 then
        message := 'third option';
    end;
    

    或者这个(感谢@AndreasRejbrand):

    case idade of
      9: message := 'first option';
      12..16: message := 'second option';
      19..MaxInt{idade.MaxValue}: message := 'third option';
    end;
    

    您可能想阅读 Embarcadero 的文档,了解 Case Statements 的实际工作原理。

    请注意,在原始代码中,if (number&gt; 8) and (number&lt; 10) thenif (number = 9) then 相同,如果 number 是 10、17 或 18,则您将跳过 message 的赋值,这就是您真正的意思想要吗?

    【讨论】:

    • 现在我明白了,类似于设置数组的大小。感谢您的帮助
    • 实际上,else 场景不需要使用特殊情况。您可以在现代版本的 Delphi 中使用 19..idade.MaxValue: message := 'third option',在 Delphi 6 中使用 19..MaxInt: message := 'third option'(假设 idade 的类型为 Integer)。
    • @riki481 DelphiBasics 非常陈旧,缺乏许多重载和现代编译器功能的文档。另一方面,Embarcarero 的 DocWiki 上的搜索引擎不是很好,所以我经常使用 Google 通过将搜索限制在 DocWiki 站点来查找 DocWiki 中的内容。
    • @riki481 与设置数组大小不同。使用 case 语句时,您实际上为每个分支提供了一组值,这些值将触发 case 语句代码的该分支。对于定义集合,您可以使用12..16 格式,该格式定义了从 12 到 16 的所有数字的集合,包括 12 和 16。您可以使用 1,3,8 在集合中仅包含数字 1、3 和 8。或者您也可以结合使用这两种方法,例如1,3..5,7,它将定义一个包含数字 1、7 以及 3 到 5 之间的所有数字(包括 3 和 5)的集合......
    • ... 我建议您阅读 Delphi documentation 中有关集合的更多信息,以帮助您了解如何充分利用 case 语句,因为在大多数情况下,您希望使用 case 语句来针对特定条件执行特定代码
    猜你喜欢
    • 2013-06-01
    • 2011-05-15
    • 2016-07-18
    • 1970-01-01
    • 2021-09-21
    • 2016-03-02
    • 2018-07-31
    • 1970-01-01
    • 2018-04-17
    相关资源
    最近更新 更多