(delphi11最新学习资料) Object Pascal 学习笔记---第3章第3节(Case语句)

本文介绍了Delphi11中的Case语句,如何用其替代复杂的if语句,处理基于序数值的条件。还探讨了使用case测试的多个条件和嵌套if结构,以及与C语言switch语句的区别。
摘要由CSDN通过智能技术生成

Object Pascal 学习笔记,Delphi 11 编程语言的完整介绍 作者: Marco Cantu 笔记:豆豆爸

3.3 Case 语句

​ 如果您的 if 语句变得非常复杂,并且它们基于对序数值的测试,您可以考虑将它们替换为 case 语句。case 语句包括一个用于选择值的表达式,以及一系列可能的值或值范围。这些值是常量,必须是唯一的且属于序数类型。最终,可能有一个 else 语句,如果您指定的值都不对应于可以选择的值,则执行这个语句。虽然没有相应的 endcase 语句,但 case 总是以 end 结束(在这种情况下不是块终结符,因为没有匹配的 begin)。

注解: 创建 case 语句需要一个序数值。目前不允许基于字符串的 case 语句。在这种情况下,您需要使用嵌套 if 语句或不同的数据结构,比如字典(正如我在本书第14章中后面展示的)。

​ 下面是一个示例(CaseTest 项目的一部分),该示例使用在数字输入控件 NumberBox 中输入的数字的整数部分作为输入:

var
  ANumber: Integer;
  AText: string;
begin
  ANumber := Trunc(NumberBox1.Value);
  case ANumber of
    1: AText := 'One';
    2: AText := 'Two';
    3: AText := 'Three';
  end;
  if AText <> '' then
    Show(AText);

​ 另一个例子是将前面复杂 if 语句扩展为 case 测试的多个不同条件:

case AChar of
  '+': AText := 'Plus sign';
  '-': AText := 'Minus sign';
  '*', '/': AText := 'Multiplication or division';
  '0'..'9': AText := 'Number';
  'a'..'z': AText := 'Lower-case character';
  'A'..'Z': AText := 'Upper-case character';
  #12032..#12255: AText := 'Kangxi Radical';
  else
    AText := 'Other character: ' + AChar;
end;

注解: 正如您在前面的代码片段中所看到的,数值范围的定义与子范围数据类型的语法相同。单个分支的多个值则用逗号分隔。在 "康熙部首 "部分,我使用的是数值而不是实际字符,因为 IDE 编辑器使用的大多数固定大小字体都无法正确显示符号。

​ 包含 else 部分以提示未定义或意外情况是一种良好的做法。Object Pascal 中的 case 语句只选择一条执行路径,并不将自己置于入口点。换句话说,它执行所选值冒号后的语句或代码块,并跳到 case 后的语句。

​ 这与 C 语言(及其某些派生语言)截然不同,C 语言将 switch 语句的分支视为入口点,并将执行所有后续语句,除非您特别使用了 break 请求(尽管这是 Java 和 C# 在实现上存在差异的一种特定情况)。C 语言的语法如下:

switch (aChar) {
  case '+': aText = "plus sign"; break;
  case '-': aText = "minus sign"; break;
  ...
  default: aText = "unknown"; break;
}
  • 16
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值