Mehdi Saada
2018-03-18 01:32:50 UTC
Il y a quelque chose que j'ai mal compris au sujet des types à échelle de classe.
Je pensais qu'ils pouvaient s'employer comme paramètres formels dans deux cas:
avec procedure FOO (objet: in objet_type);
dans ce cas il y a dispatching,
et procedure FOO(Objet: objet_type'Class);
et dans ce cas il n'y a pas de dispatching, mais ça n'acceptera que les objets dont le type est OBJET_TYPE'CLass.
Mais dans Ada 95 the craft of object oriented programming:
Je vois ces exemples:
voilà le profil d'un sous-programme:
procedure PARSE (SYNTAX: in EXPRESSION_TYPE; EXPR: in STRING; FROM: in out POSITIVE; PRIO: in PRIORITY_TYPE; RESULT: out INTEGER; NEXT: in out TOKEN_POINTER);
Mais il est appelé ainsi:
Parse (Expression_Type'Class (Syntax), Expr, From, Priority_Type'Last, Result, Next);
Le type de Syntax est EXPRESSION_TYPE.
Quelle différence cela fait-il sans cette conversion ?
Je pensais qu'ils pouvaient s'employer comme paramètres formels dans deux cas:
avec procedure FOO (objet: in objet_type);
dans ce cas il y a dispatching,
et procedure FOO(Objet: objet_type'Class);
et dans ce cas il n'y a pas de dispatching, mais ça n'acceptera que les objets dont le type est OBJET_TYPE'CLass.
Mais dans Ada 95 the craft of object oriented programming:
Je vois ces exemples:
voilà le profil d'un sous-programme:
procedure PARSE (SYNTAX: in EXPRESSION_TYPE; EXPR: in STRING; FROM: in out POSITIVE; PRIO: in PRIORITY_TYPE; RESULT: out INTEGER; NEXT: in out TOKEN_POINTER);
Mais il est appelé ainsi:
Parse (Expression_Type'Class (Syntax), Expr, From, Priority_Type'Last, Result, Next);
Le type de Syntax est EXPRESSION_TYPE.
Quelle différence cela fait-il sans cette conversion ?