Aperçu
Il est parfois nécessaire d'effectuer la même tâche sur plusieurs objets du même type. Une approche consiste à répéter l'instruction pour chaque objet. Cependant, cela nécessite de retaper l'instruction pour chaque objet ou d'utiliser une boucle.
Une approche pratique consiste à envoyer le message à une liste d'objets. Cette méthode nécessite de saisir le message une seule fois. Deux exemples sont donnés ci-dessous.
Exemple 1
Supposons que j'ai deux tables de données et que je souhaite ajouter la même colonne de formules à chaque table. Supposons également que je souhaite trier chacune des tables en de nouvelles tables et créer des références vers les nouvelles tables. Vous pouvez envoyer les messages à une liste de tables comme indiqué ci-dessous, ainsi qu'utiliser une liste de noms sur le côté gauche du signe égal.
//Create 2 sample tables
dt1 = New Table( "Table1",
Add Rows( 10 ),
New Column( "Index", "Numeric", "Ordinal", Set Values( Index( 1, 10 ) ) )
);
dt2 = New Table( "Table2",
Add Rows( 10 ),
New Column( "Index", "Numeric", "Ordinal", Set Values( Index( 11, 20 ) ) )
);
//Add a formula column to both tables
{dt1, dt2} << New Column( "Random", Formula( Random Normal() ) );
//Sort by the new column and return a list of references to the new sorted tables
{dt1s, dt2s} = {dt1, dt2} << Sort( By( :Random ) );
Exemple 2
Supposons que j'ai plusieurs zones de texte et que je souhaite modifier la couleur de police de chacune d'elles, ainsi que récupérer le texte et stocker les informations dans de nouvelles variables. Comme indiqué ici, vous pouvez utiliser des listes pour effectuer toutes les actions en même temps.
//Create a window containing a few TextBoxes
nw = New Window( "Example",
tb1 = Text Box( "This is text box 1" ),
tb2 = Text Box( "This is text box 2" ),
tb3 = Text Box( "This is text box 3" )
);
//Set the font color by sending the message to a list of the objects
{tb1, tb2, tb3} << Font Color( Red );
//Return a list of the text stored in each TextBox
{text1, text2, text3} = {tb1, tb2, tb3} << Get Text;
[Auparavant JMP Note 50975]