Re: renames

Laurent GUERBY <[email protected]>
Newsgroups gmane.comp.lang.ada.france
Message-ID <[email protected]>
On Tue, 2005-08-16 at 22:05 +0200, Thomas De Contes wrote:
> Bonjour :-)
> 
> 
> J'ai :
> p :machin renames s.p(cnd.m);
> 
> s et cnd sont des variables
> s.p est un tableau de machin, cnd.m est l'index
> 
> Je modifie cnd.m après cette déclaration,
> et apparemment, quand j'utilise p après, cnd.m a l'ancienne valeur,
> cad que qqch aurait été figé au moment de la déclaration du renames
> 
> Ca me surprends, parce que je pensais que "renames" c'était uniquement 
> un raccourci, et que *tout* était recalculé à chaque fois
> 
> 
> Est ce que qqn pourrait m'expliquer comment ça marche exactement, svp ?
> quand il y a des fonctions par exemple

renames s'applique a des objets et non a des expressions symboliques
c'est pour ca que tu as ce comportement. Quand il y a des fonctions
c'est l'objet resultat de l'appel initial.

C'est d'ailleur un bon moyen de faire le presque equivalent d'une
affectation sur des objets dont le type est limité privé :

procedure PP is
   type T is limited null record;
   Tmp : T;
   function F return T is
   begin
      return Tmp;
   end F;
   -- Y : T := F; -- Illegal
   Y : T renames F; -- Legal
begin
   null;
end PP;

Sincerement,

Laurent

_______________________________________________
Site WWW de l'association Ada-France: http://www.ada-france.org/
[email protected]
http://www.ada-france.org/mailman/listinfo/ada-france
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.