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

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

Wahlfreie Argumente und Vorgabe-ArgumenteWiederholte Muster

2.3.10 Konstruktion von Funktionen mit wahlfreien Argumenten

Wenn Sie eine komplizierte Funktion definieren, werden Sie oft wollen, daß einige der Argumente der Funktion „wahlfrei" sind. Falls Sie diese Argumente nicht explizit angeben, verlangen Sie, daß sie bestimmte „Vorgabe"-Werte annehmen.

Eingebaute Mathematica-Funktionen benutzen zwei Grundmethoden zum Umgang mit wahlfreien Argumenten. Sie können zwischen denselben beiden Methoden wählen, wenn Sie in Mathematica Ihre eigenen Funktionen definieren.

Bei der ersten Methode geht man davon aus, daß jedes Argument durch seine Position bestimmt ist, und man erlaubt dann, Argumente wegzulassen und sie durch Vorgabewerte zu ersetzen. Fast alle eingebauten Mathematica-Funktionen, die diese Methode benutzen, lassen Argumente am Ende weg. Zum Beispiel kann bei der eingebauten Funktion Flatten[liste, n] das zweite Argument weggelassen werden, das dann den Vorgabewert Infinity annimmt.

Diese „positionellen" Argumente lassen sich mit dem Muster _: implementieren.

Definieren einer Funktion mit positionellen Argumenten

Dies definiert eine Funktion mit einem wahlfreien zweiten Argument. Wenn das zweite Argument weggelassen wird, gilt der Vorgabewert Infinity.

In[1]:= f[liste_, n_:Infinity] := f0[liste, n]

Hier ist eine Funktion mit zwei wahlfreien Argumenten.

In[2]:= fx[liste_, n1_:1, n2_:2] := fx0[liste, n1, n2]

Mathematica nimmt an, daß Argumente vom Ende her weggelassen werden. Folglich liefert m den Wert von n1, während n2 den Vorgabewert 2 hat.

In[3]:= fx[k, m]

Out[3]=

Die zweite Methode, die eingebaute Mathematica-Funktionen zum Umgang mit wahlfreien Argumenten nutzen, besteht darin, den wahlfreien Argumenten explizite Namen zu geben, und dann zur Wertevergabe Transformationsregeln zu benutzen. Diese Methode ist besonders nützlich bei Funktionen wie Plot, die eine sehr große Anzahl wahlfreier Parameter haben, von denen normalerweise nur wenige benutzt werden müssen.

In der Regel können Werte für „benannte" wahlfreie Argumente durch Angabe geeigneter Transformationsregeln am Ende der Argumente einer bestimmten Funktion spezifiziert werden. So könnte zum Beispiel die Regel PlotJoined->True, die die Einstellung für das benannte wahlfreie Argument PlotJoined angibt, als ListPlot[liste, PlotJoined->True] auftreten.

Wenn Sie benannte wahlfreie Argumente für eine Funktion f aufstellen, werden nach Übereinkunft die Vorgabewerte für diese Argumente als eine Liste von Transformationsregeln, die Options[f] zugewiesen wird, gespeichert.

Benannte Argumente

Dies stellt Vorgabewerte für die beiden benannten wahlfreien Argumente opt1 und opt2 in der Funktion fn auf.

In[4]:= Options[fn] = { opt1 -> 1, opt2 -> 2 }

Out[4]=

Dies liefert den Vorgabewert für opt1.

In[5]:= opt1 /. Options[fn]

Out[5]=

Da die Regel opt1->3 zuerst angewandt wird, wird die Vorgabe-Regel für opt1 in Options[fn] nicht benutzt.

In[6]:= opt1 /. opt1->3 /. Options[fn]

Out[6]=

Hier ist die Definition für eine Funktion fn, die die Angabe von null oder mehr benannten wahlfreien Argumenten erlaubt.

In[7]:= fn[x_, opts___] := k[x, opt2/.{opts}/.Options[fn]]

Wenn keine wahlfreien Argumente angegeben werden, wird die Vorgabe-Regel für opt2 benutzt.

In[8]:= fn[4]

Out[8]=

Wenn Sie explizit eine Regel für opt2 angeben, wird sie benutzt, bevor die Vorgabe-Regeln ausprobiert werden, die in Options[fn] gespeichert sind.

In[9]:= fn[4, opt2->7]

Out[9]=

Wahlfreie Argumente und Vorgabe-ArgumenteWiederholte Muster