ForEach-Schleife in Mathematica

Ich würde gerne so etwas wie dieses:

each[i_, {1,2,3},
  Print[i]
]

Oder, mehr allgemein, zu destructure beliebige Sachen in der Liste sind Sie Durchlaufen, wie:

each[{i_, j_}, {{1,10}, {2,20}, {3,30}},
  Print[i*j]
]

In der Regel, die Sie verwenden möchten oder andere Map rein funktionale Konstrukte und meiden einen nicht-funktionalen Programmierung Stil, wo Sie mit Seite Auswirkungen. Aber hier ist ein Beispiel, wo ich denke, eine for-each-Konstrukt ist äußerst nützlich:

Sagen, ich habe eine Liste von Optionen (Regeln), dass ein paar Symbole mit Ausdrücken, wie

attrVals = {a -> 7, b -> 8, c -> 9}

Nun möchte ich, um eine hash-Tabelle, wo ich die offensichtliche Zuordnung dieser Symbole, um diese zahlen. Ich glaube nicht, dass es ein sauberer Weg zu tun, als

each[a_ -> v_, attrVals, h[a] = v]

Zusätzliche Testfälle

In diesem Beispiel wandeln wir eine Liste von Variablen:

a = 1;
b = 2;
c = 3;
each[i_, {a,b,c}, i = f[i]]

Nachdem die oben genannten, {a,b,c} ermitteln von {f[1],f[2],f[3]}. Beachten Sie, dass das bedeutet, dass das zweite argument von "jeder" gehalten werden soll, ungewichtete wenn es eine Liste.

Wenn die ungewichtete form ist keine Liste, es einschätzen soll, das zweite argument. Zum Beispiel:

each[i_, Rest[{a,b,c}], Print[i]]

Sollte drucken Sie die Werte von b und c.

Nachtrag: für jedes richtig, es sollte die Unterstützung Brechen, [] und Weiter[]. Ich bin mir nicht sicher, wie Sie Sie umsetzen. Vielleicht wird es brauchen, um irgendwie implementiert werden For -, While -, oder Do da sind nur loop-Konstrukte, die Unterstützung Brechen[] und Weiter[].

Und ein weiteres problem mit dem Antworten so weit: Sie Essen Zurück [s]. Das ist, wenn Sie mit einer ForEach-Schleife in eine Funktion und wollen die Rückkehr aus der Funktion innerhalb der Schleife, kann man nicht. Ausstellung Rückkehr in der ForEach-Schleife scheint zu funktionieren wie Weiter[]. Dies nur (warten) warf mich für eine Schleife.

InformationsquelleAutor der Frage |

Schreibe einen Kommentar