Allocation dynamique
La définition du type d'une variable est nécessaire car elle permet à Sisal de connaître les méthodes et attributs disponibles. Dans certains cas cependant on ne connaît pas à la compilation la variable effectivement traitée et/ou une partie de ses caractéristiques ( par exemple la taille d'un tableau).
Sisal permet de déclarer une variable d'un certain type sans l'allouer, on déclare la variable comme si il s'agissait d'une variable de ce type.
Variable AS Type;
Par exemple
MonPoint As Point ; MonTableau as Array[1] ; MonTableauDePoint Array[100] as Point; ... echo( "MonPoint.est ":MonPoint.est());
Au démarrage MonPoint n'est pas créé, mais on peut avoir du code relatif à celui-ci. A l ’exécution cette instruction provoquera un erreur (/ErrSys/ Object access) car à ce moment là MonPoint n'est pas un point.
Pour que ce point existe et effectivement pouvoir l'utiliser il faut l'allouer.
New Type ;
Par l ’exécution de la primitive new on créée une nouvelle instance de ce type, par exemple.
MonPoint = new Figure( « cercle ») ; echo( "MonPoint.est ":MonPoint.est());
On créée une instance de figure ; Figure est une classe dérivée de Point ; On peut donc considérer cette instance Figure comme une instance Point et l'affecter à une variable de type Point.
Derrière on pourra appeler sur MonPoint les méthodes de Point mais pas celles de Figure.