跳转到内容

Ada 编程/关键字/for

来自维基教科书,开放的书籍,开放的世界

Ada. Time-tested, safe and secure.
Ada。经久耐用,安全可靠。


此关键字用于

  • For 循环
  • 表示子句:
    • 属性定义子句
    • 枚举表示子句
    • 记录表示子句
    • at 子句(已过时)
  • 量化表达式
    • 全称量化
    • 存在量化

如今,由于一些技术细节,表示子句在参考手册的最新版本中正式称为方面子句,尽管表示子句是 Ada 程序员中更广泛使用的名称。作为历史记录,它们在 Ada 83 之前的提案中被称为表示规范rep specs)。[1]

For 循环

[编辑 | 编辑源代码]
[loop name :] for var in [ reverse ] [type range] range loop
   ...
end loop [loop name];

其中范围可以是

  • 显式范围,例如“low .. high”,
  • 标量或数组类型的范围:type'Range(或 type'Range(n) 用于多维数组类型)
  • 数组的范围:array'Range(或 array'Range(n) 用于多维数组)

关键字in 也可以后跟一个可迭代对象。这通过包含在Ada.Iterator_Interfaces 中定义的接口之一的类型来概括迭代。此语言特性是在 Ada 2012 中引入的。

另一种概括的循环迭代形式使用关键字of 代替in。然后循环参数直接引用数组或可迭代容器类型的组件。此语言特性是在 Ada 2012 中引入的。

[loop name :] for var [: type] of [ reverse ] iterable loop
   ...
end loop [loop name];

表示子句

[编辑 | 编辑源代码]

关键字for, useat 用于表示子句。

记录表示子句指定记录的布局 方面

枚举表示子句指定枚举类型的编码 方面

参见 Ada 编程/表示子句

量化表达式

[编辑 | 编辑源代码]

此语言特性是在 Ada 2012 中引入的。

量化表达式是布尔表达式。它们要么是要么是,要么传播评估期间引发的任何异常。

全称量化

[编辑 | 编辑源代码]

全称量化 表达式

(for all var in range => predicate)
(for all var of iterable => predicate)

范围可迭代对象)中的所有值都使谓词产生时,这两种形式都将评估为谓词的评估在以下两种情况下停止:所有循环参数var的值都已耗尽,或者当对某个值的评估产生(短路)时。

存在量化

[编辑 | 编辑源代码]

存在量化 表达式

(for some var in range => predicate)
(for some var of iterable => predicate)

范围可迭代对象)中的某些值使谓词产生时,这两种形式都将评估为谓词的评估在以下两种情况下停止:所有循环参数var的值都已耗尽,或者当对某个值的评估产生(短路)时。

另请参阅

[编辑 | 编辑源代码]

维基教科书

[编辑 | 编辑源代码]

Ada 参考手册

[编辑 | 编辑源代码]

Ada 质量和风格指南

[编辑 | 编辑源代码]

参考文献

[编辑 | 编辑源代码]
  1. 约翰·巴恩斯 (2003-03-25). 高完整性软件 - SPARK 安全与安全方法. Addison-Wesley. ISBN 0-321-13616-0. 检索于 2008-06-06. 表示子句现在严格地称为方面子句 - 术语在 2000 年 Ada 95 修正案中进行了更改,原因很微妙,我们不必担心;Ada 历史学家可能会回想起,它们在 1983 年的 ANSI 标准化之前被称为表示规范(rep specs)。这些各种术语都仍在使用中,读者将在文献中遇到它们。(pp.212-213)


Ada关键字
abort else new return
abs elsif not reverse
abstract (Ada 95) end null
accept entry select
access exception of separate
aliased (Ada 95) exit or some (Ada 2012)
all others subtype
and for out synchronized (Ada 2005)
array function overriding (Ada 2005)
at tagged (Ada 95)
generic package task
begin goto parallel (Ada 2022) terminate
body pragma then
if private type
case in procedure
constant interface (Ada 2005) protected (Ada 95) until (Ada 95)
is use
declare raise
delay limited range when
delta loop record while
digits rem with
do mod renames
requeue (Ada 95) xor
华夏公益教科书