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 :
Portée de l'objet - Pour accéder aux membres d'un objet qui n'est pas actif dans la portée de la conversion courante, il est possible de spécifier une portée d'objet.
Collection scope - Pour accéder aux membre d'une collection, vous pouvez spécifier une portée de collection. Pour plus d'informations sur les collections d'objet, voir Fichiers de ressources et métamodèle public de PowerAMC.
Par exemple :
Portée externe - Une portée externe peut être accessible à l'aide du mot clé Outer. Les règles suivantes s'appliquent :
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 :