Je prends Ada au collège. Aujourd'hui, mon professeur nous a posé une question. Dans le bit de code suivant, il y a trois déclarations de type. Le troisième ne compile pas avec une erreur 'missing new'.Ada Type Déclaration Sémantique
Je suppose que le mot-clé « Type » permet au compilateur que nous définissons sur une classe de stockage Mes questions sont les suivantes:
quelles sont les différences sémantiques entre les déclarations?
Si le mot clé Entier est omis, Ada suppose-t-il le type entier universel lorsque la plage est spécifiée? Cela semble être un résultat logique et évident. De plus, lorsque le mot-clé "Integer" est avant "range" est nouveau alors nécessaire? J'espère que ce n'était pas ambigu, j'ai fait quelques recherches, mais je n'arrive pas à trouver une réponse exacte, ou peut-être que je suis beaucoup d'un débutant avec Ada pour comprendre ce que j'ai trouvé. Je voudrais vraiment comprendre ce qui se passe ci-dessous.
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;
Encore quelques mots sur 'Integer': répondre à l'appel de' Integer' peut être un peu déroutant parce que c'est juste un nom, alors que les mots-clés sont généralement réservés à la syntaxe, ou à d'autres usages spéciaux . ** type ** et ** fin ** sont de ce type. 'Integer' est le nom d'un sous-type parfaitement normal défini dans la bibliothèque Ada. Ce type 'Integer' est à utiliser avec d'autres sous-programmes de bibliothèque, généralement. Donc, définir des types comme 'def' comme vous l'avez fait est juste. – B98