This is documentation for Mathematica 4, which was
based on an earlier version of the Wolfram Language.
View current documentation (Version 11.1)

 Documentation /  Mathematica /  Das Mathematica Buch /  Die Prinzipien von Mathematica /  Muster /

Flache und ungeordnete FunktionenWahlfreie Argumente und Vorgabe-Argumente

2.3.8 Funktionen mit einer variablen Anzahl von Argumenten

Wenn f keine flache Funktion ist, steht ein Muster wie f[x_, y_] nur für Vorkommnisse der Funktion mit genau zwei Argumenten. Manchmal müssen Sie Muster erstellen, die eine beliebige Anzahl von Argumenten erlauben.

Das erreichen Sie mit mehrfachen Blanks. Während ein einfaches Blank wie x_ für einen einzelnen Mathematica-Ausdruck steht, steht ein doppeltes Blank wie x__ für eine Folge von einem oder mehreren Ausdrücken.

Hier steht x__ für die Folge der Ausdrücke (a, b, c).

In[1]:= f[a, b, c] /. f[x__] -> p[x, x, x]

Out[1]=

Hier ist eine kompliziertere Definition, die Paare doppelter Elemente in h auswählt.

In[2]:= h[a___, x_, b___, x_, c___] := hh[x] h[a, b, c]

Die Definition wird zweimal angewendet, und die zwei gepaarten Elemente werden ausgewählt.

In[3]:= h[2, 3, 2, 4, 5, 3]

Doppelte Blanks" __ stehen für Folgen von einem oder mehreren Ausdrücken. „Dreifache Blanks" ___ stehen für Folgen von null oder mehreren Ausdrücken. Sie sollten sehr sorgfältig sein, wenn Sie ein dreifaches Blank-Muster benutzen. Man macht leicht Fehler, die zu einer Endlosschleife führen können. Wenn Sie zum Beispiel p[x_, y___] := p[x] q[y] definieren, dann wird das Eintippen von p[a] zu einer Endlosschleife führen, in der y wiederholt zu einer Folge von null Elementen paßt. Wenn Sie nicht sicher sind, daß Sie den Fall von null Elementen berücksichtigen wollen, sollten Sie immer doppelte statt dreifache Blanks benutzen.

Mehr Arten von Muster-Objekten

Beachten Sie, daß Mathematica bei flachen Funktionen wie Plus und Times automatisch eine variable Anzahl von Argumenten berücksichtigt, so daß Sie nicht, wie in Abschnitt 2.3.7 besprochen wurde, explizit doppelte oder dreifache Blanks benutzen müssen.

Wenn Sie mehrfache Blanks benutzen, werden oft verschiedene passende Gegenstücke für einen Ausdruck möglich sein. Im allgemeinen probiert Mathematica zuerst die Gegenstücke, die dem ersten mehrfachen Blank, das im Muster auftritt, die kürzesten Folgen von Argumenten zuweist.

Dies liefert eine Liste aller passenden Gegenstücke, die Mathematica versucht.

In[4]:= ReplaceList[f[a, b, c, d], f[x__, y__] -> g[{x}, {y}]]

Out[4]=

Viele Arten der Aufzählungen können mit ReplaceList mit diversen Arten von Mustern erfolgen.

In[5]:= ReplaceList[f[a, b, c, d], f[___, x__] -> g[x]]

Out[5]=

Hiermit werden im Grunde alle Unterlisten mit mindestens einem Element aufgezählt.

In[6]:= ReplaceList[f[a, b, c, d], f[___, x__, ___] -> g[x]]

Out[6]=

Flache und ungeordnete FunktionenWahlfreie Argumente und Vorgabe-Argumente