我正在大學攻讀Ada。今天,我的教授向我們提出了一個問題。在下面的代碼中有三個類型聲明。第三個不會編譯錯誤「缺少新的」。Ada類型聲明語義
我假設的「類型」關鍵字讓編譯器知道我們即將定義的存儲類,所以我的問題是:
哪些聲明之間的語義差別?
如果省略關鍵字Integer,那麼Ada在指定範圍時是否採用通用整數類型?這似乎是一個明顯而合乎邏輯的結果。此外,當「範圍」之前的關鍵字「整數」是新的,那麼是否需要?
我希望這不是模棱兩可的,我做了一些研究,但似乎無法找到確切的答案,或者我很想與Ada的新手瞭解我發現的東西。我真的很想了解下面發生的事情。
with Ada.Text_IO; use ada.Text_IO;
procedure any is
type abc is new Integer range 1..10;
num : abc;
type def is range 1..10;
num2 : def;
type xyz is Integer range 1..10;
num3 : xyz;
begin
num := 5;
num2 := 6;
num3 := 7;
end any;
關於'Integer'的更多單詞:回答時,調用'Integer'關鍵字可能有點混亂,因爲它只是一個名稱,而關鍵字通常保留用於語法本身,或者除了命名之外的其他特殊用途。 **類型**和**結束**屬於這種類型。 Integer是Ada庫中定義的完美正常子類型的名稱。這個'Integer'類型通常用於其他庫子程序。所以,像'def'這樣定義類型就是正確的。 – B98