Überblick
Manchmal ist es notwendig, dieselbe Aufgabe für mehrere Objekte desselben Typs auszuführen. Eine Möglichkeit besteht darin, die Anweisung für jedes Objekt zu wiederholen. Dies erfordert jedoch, dass Sie die Anweisung für jedes Objekt erneut eingeben oder eine Schleife verwenden.
Ein praktischer Ansatz besteht darin, die Nachricht an eine Liste von Objekten zu senden. Bei dieser Methode müssen Sie die Nachricht nur einmal eingeben. Nachfolgend finden Sie zwei Beispiele.
Beispiel 1
Angenommen, ich habe zwei Datentabellen und möchte jeder Tabelle dieselbe Formelspalte hinzufügen. Außerdem möchte ich jede der Tabellen in neue Tabellen sortieren und Verweise auf die neuen Tabellen erstellen. Sie können die Nachrichten an eine Liste der Tabellen senden, wie unten gezeigt, oder eine Liste mit Namen auf der linken Seite des Gleichheitszeichens verwenden.
//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 ) );
Beispiel 2
Angenommen, ich habe mehrere Textfelder und möchte die Schriftfarbe für alle ändern, außerdem den Text abrufen und die Informationen in neuen Variablen speichern. Wie hier gezeigt, können Sie Listen verwenden, um alle Aktionen gleichzeitig auszuführen.
//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;
[Vorheriger JMP-Hinweis 50975]