Ada 程式設計/表示式
外觀
< Ada 程式設計
LRM 將表示式定義為“定義值計算或檢索的公式。
”.[1] 表示式有很多形式,從字面量或名稱之類的基本元素到量化表示式。
表示式通常用於賦值語句中,或者作為更大的表示式的組成部分。表示式的值通常涉及計算。但是,一些表示式的值在編譯時確定;這些稱為靜態表示式。一個所謂的簡單表示式(恰好是一個項)在以下語句中可以看到
Area := Length * Height;
文字Length * Height 具有表示式的形式,並用在賦值語句的右側。計算表示式的值意味著將名為Length的值乘以名為Height的值。以下示例展示了將相同表示式用作更大表達式的組成部分
ifCost (Paint, Area => Length * Height) > 900 * Dollarthen...
更大的表示式以Cost開頭,以Dollar結尾。它包含另一種形式的表示式,一個關係,並將函式呼叫和另一個乘法表達式分別放置在關係的運算子>的左側和右側。這兩個被稱作運算元,結果是布林表示式。
基本表示式包括字面量,例如十進位制(實數)、列舉、字串和訪問值字面量
2.5e+3
False
"и"
null
使用其中很多,可以編寫聚合(一個基本元素),
(X => 0.0, Y => 1.0, Z => 0.0)
但也可以包含任意複雜的子元件,從元件表示式建立聚合,
(Height => 1.89 * Meter,
Age => Guess (Picture => Images.Load (Suspects, "P2012-Aug.PNG"),
Tiles => Grid'(1 .. 3 => Scan, 4 => Skip)),
Name => new Nickname'("Herbert"))
Age 與巢狀的函式呼叫的值相關聯。Tiles 的實際引數具有型別名稱Grid 限定了後面的陣列聚合;元件Name 與一個分配器相關聯。
眾所周知的“數學”表示式在 Ada 語法中具有非常對應的簡單表示式,例如 2.0*π*r,或者關係
Area = π*r**2
其他表示式測試成員資格在範圍內,或在型別中
Xin1 .. 10 | 12 ShapeinPolygon'Class
Ada 2012 中新增了一些形式,可以使表示式的值有條件地依賴於另一個表示式的值。它們有一對圓括號,並以關鍵字開頭,這清楚地將它們與其他型別的表示式區分開來。例如
Area := (ifIs_CircularthenPi * Radius**2elseLength * Height);
在這個例子中,Is_Circular 的值決定了用於計算整個表示式值的表示式的哪一部分。類似的結構也存在於case 以及for。這些型別的表示式經常用在斷言中,例如在基於契約的程式設計的條件中。
