我正在大学攻读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