Portée de la conversion

La portée de la conversion définit le contexte d'évaluation d'un template, en déterminant l'objet auquel le template est appliqué. La portée peut changer lors de la conversion d'un template, mais un seul objet peut être actif à la fois.

La portée initiale est toujours la métaclasse sur laquelle le template est défini. Tous les attributs de métamodèle et les collections définies sur la métaclasse d'objet active et ses parents sont visibles, de même que les attributs étendus et templates correspondants.

Vous pouvez modifier la portée en utilisant le caractère '.' (point), qui se comporte comme un opérateur d'indirection comme dans le langage de programmation Java, le côté droit correspond à un membre de l'objet référencé par le côté gauche.

Les types de portée suivants sont disponibles :

De nouvelles portées peuvent être créées lors de l'évaluation d'un template qui force l'objet à changer. Par exemple, la macro foreach_item (voir Macro .foreach_item) qui permet l'itération sur les collections définit une nouvelle portée, de même que la macro foreach_line (voir Macro .foreach_line). La portée externe est restaurée à la fin du bloc.

Les portées imbriquées forment une hiérarchie qui peut être affichée sous la forme d'une arborescence, la portée de plus haut niveau étant la racine.

L'exemple suivant montre le mécanisme de la portée à l'aide d'un template de classe :