Ada 编程/关键字/for
外观
此关键字用于
如今,由于一些技术细节,表示子句在参考手册的最新版本中正式称为方面子句,尽管表示子句是 Ada 程序员中更广泛使用的名称。作为历史记录,它们在 Ada 83 之前的提案中被称为表示规范(rep specs)。[1]
[loop name :]for
varin
[reverse
] [typerange
] rangeloop
...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
] iterableloop
...end
loop
[loop name];
记录表示子句指定记录的布局 方面。
枚举表示子句指定枚举类型的编码 方面。
参见 Ada 编程/表示子句。
此语言特性是在 Ada 2012 中引入的。
量化表达式是布尔表达式。它们要么是真要么是假,要么传播评估期间引发的任何异常。
全称量化 表达式
(for
all
varin
range => predicate) (for
all
varof
iterable => predicate)
当范围(可迭代对象)中的所有值都使谓词产生真时,这两种形式都将评估为真。谓词的评估在以下两种情况下停止:所有循环参数var的值都已耗尽,或者当对某个值的评估产生假(短路)时。
存在量化 表达式
(for
some
varin
range => predicate) (for
some
varof
iterable => predicate)
当范围(可迭代对象)中的某些值使谓词产生真时,这两种形式都将评估为真。谓词的评估在以下两种情况下停止:所有循环参数var的值都已耗尽,或者当对某个值的评估产生真(短路)时。
- 2.9 保留字 (注释)
- 附录 P(信息性)语法摘要 (注释)
- 5.5 循环语句 (注释)
- 13.3 操作和表示属性 (注释)
- 13.4 枚举表示子句 (注释)
- 13.5.1 记录表示子句 (注释)
- 附录 J.7 At 子句 (注释)(已过时)
- 13.5:地址子句(已过时)
- ↑ 约翰·巴恩斯 (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
|