Funktionsdefinitionen Video ansehen In der Wolfram Language sind Funktionsdefinitionen nichts anderes als Zuweisungen, die die Übergaberegeln für Patterns angeben. Anmerkungen für Java-Programmierer: Im Gegensatz zu Methoden in der objektorientierten Java-Programmiersprache werden Funktionen der Wolfram Language nicht durch eine Klassenhierarchie beschränkt. Definieren Sie eine Funktion mit zwei Argumenten namens x und y: In[1]:= Anmerkungen für Java-Programmierer: Bei Funktionsdefinitionen in der Wolfram Language folgt auf Parameternamen ein Unterstrich _ ("blank"). Anders als Java akzeptieren Wolfram Language-Funktionen standardmäßig Daten aller Art. Anmerkungen für Python-Programmierer: Bei Funktionsdefinitionen in der Wolfram Language folgt auf Parameternamen ein Unterstrich _ ("blank"). Parameter können beliebigen symbolischen Mustern entsprechen. Dies ermöglicht mächtige und flexible Definitionen, die so standardmäßig in Python nicht möglich wären. Verwenden Sie die Definition: In[2]:= Out[2]= Löschen Sie die Definition: In[3]:= Funktionen können definiert werden, indem man ihnen eine Reihe an Werten zuweist: In[1]:= Out[1]= In[2]:= Out[2]= Undefinierte Fälle bleiben unberührt: In[3]:= Out[3]= Mit /; können Sie eine Definition einschränken, so dass sie nur unter einer bestimmten Bedingung angewendet wird: In[4]:= Anmerkungen für Java-Programmierer: Der Operator /; funktioniert in der Wolfram Language wie eine verkürzte If-Anweisung. Anmerkungen für Python-Programmierer: In der Wolfram Language funktioniert /; wie eine If-Anweisung, die auf eine Funktion angewendet werden kann, so dass eine Funktion je nach Bedingung flexibel eine Definition auswählen kann. Sie können die Parameterübergaben der linken Seite definieren — eine bequeme Art, Argumente zu "dekonstruieren": In[1]:= In[2]:= Out[2]= Die Wolfram Language arbeitet nicht mit Typen per se; alles ist ein symbolischer Ausdruck. Der "Kopf" eines Ausdrucks kann als eine Art verallgemeinerter Typenbezeichner verwendet werden. Geben Sie verschiedene Definitionen an, wie sich f bei Verwendung mit einem "u-Objekt" oder "v-Objekt" verhalten soll: In[1]:= In[2]:= Anmerkungen für Java-Programmierer: Dies ähnelt dem Überladen einer Java-Methode bei unterschiedlichen Datentypen, mit dem Unterschied, dass man in der Wolfram Language Funktionen basierend auf der symbolischen Struktur ihrer Argumente überladen kann. Anmerkungen für Python-Programmierer: Eine Wolfram Language-Funktion kann eingebautes Pattern-Matching verwenden, um ihr Verhalten je nach der symbolischen Struktur ihrer Argumente zu ändern. In Python würde dies ziemlich ausgefeilten Code oder externe Libraries voraussetzen. ZUM SCHNELLEN NACHSCHLAGEN: Variablen und Funktionen definieren Testen Sie Ihr Verständnis der Wolfram Language Welche der folgenden Definitionen beschreibt eine Funktion f, die zwei Zahlen (z.B. f[3, 4] == 7) addiert? f[x + y] f[x_, y_] -> x + y f[x_, y_] := x + y f[x, y] := x + y Welche Definition würde {f[1], f[2], f[3], f[4]} als {f[1], 5, 6, f[4]} auswerten? f[x_] = x f[x_] := x + 3 /; 2 <= x <= 3 f[x_] := x + 3 Wenn die Funktion f definiert ist als f[x_, y_] := x + y, welcher der folgenden Terme ist der Wert von f[a, b]? x + y f[a, b] a + b