Я беру Аду в колледж. Сегодня мой профессор задал нам вопрос. В следующем фрагменте кода есть три объявления типа. Третий не компилируется с ошибкой «отсутствует новый».
Я предполагаю, что ключевое слово «Тип» позволяет компилятору узнать, что мы собираемся определить класс хранения, поэтому мои вопросы:
каковы семантические различия между объявлениями?
Если ключевое слово Integer опущено, предполагает ли Ада универсальный целочисленный тип, когда указан диапазон? Это кажется очевидным и логичным результатом. Кроме того, когда ключевое слово «Целое число» перед «диапазоном» является новым, тогда требуется?
Я надеюсь, что это не было двусмысленным, я провел некоторое исследование, но не могу найти точного ответа, или, может быть, я слишком новичок в Аде, чтобы понять, что я нашел. Очень хотелось бы понять, что происходит внизу.
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
ключевого слова может немного сбить с толку, потому что это просто имя, в то время как ключевые слова обычно зарезервированы для правильного синтаксиса или других специальных целей, кроме именования. type и end относятся к этому типу.Integer
— это имя совершенно нормального подтипа, определенного в библиотеке Ада. Этот типInteger
обычно используется с другими библиотечными подпрограммами. Таким образом, определение таких типов, какdef
, как вы сделали, в самый раз. - person B98   schedule 08.03.2017