Nous avons vu dans les chapitres précédents comment les groupes peuvent être utilisées pour affecter simultanément une valeur à plusieurs variables d'objets. En fait, le mécanisme est bien plus général et est associé au concept de diffusion qui sera défini précisément dans la prochaine section.
Tout d'abord, quelques mots sur les groupes. Nous avons déjà appris que nous pouvions définir des groupes avec la commande group. De la même façon, vous pouvez ajouter un membre à un groupe avec la commande addgroup et en retirer un avec delgroup, ce qui vous permet la gestion dynamique de vos groupes:
group a {a1,a2};
addgroup a {c,d};
delgroup a {a1,d};
Vous pouvez examiner le contenu d'un groupe en invoquant la commande group avec seulement le nom du groupe:
group a {u,v,b};
group a
[146711:notag] ["u","v","b"]
Le regroupement de sous-groupes est possible. Dans ce cas, l'évaluation du contenu du groupe retourne la liste des membres terminaux seulement:
group a {u,v,b};
group b {x,y};
group a
[146711:notag] ["u","v","x","y"]
L'utilisation typique de cela est l'énumération de devices, comme des moteurs, qui ont été regroupés dans le même groupe:
foreach m in group motors {
$(m) = ...
}
Le constructeur $ retourne la variable dont le nom est la chaine de caractères donnée en paramètre. Dans l'exemple précédent, nous supposons qu'il y a un alias sur .val, autrement il faudrait écrire: $(m+".val")
Maintenant, nous allons voir comment utiliser en pratique les groupes avec la notion de diffusion.