跳轉到內容

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
華夏公益教科書