Lassen Sie uns zuerst den Code vereinfachen:
%Vor%Dies ist genau das gleiche wie:
%Vor%Jetzt ist klar, worauf sich x bezieht? x ist der Parameter für die Funktion "Magic".
Jetzt können Sie B wie folgt verwenden:
%Vor%Sinn machen? Siehst du, was hier passiert? Wir nehmen eine Funktion von zwei Parametern und "fixieren" einen der Parameter zu einer Konstante. Es wird also eine Funktion eines Parameters.
Das zweite Beispiel geht noch einen Schritt weiter. Nochmals, vereinfachen Sie die Gruft loszuwerden, damit Sie es leichter verstehen können:
%Vor%Dies ist das Gleiche wie
%Vor%Also sagst du
%Vor%B ist ein Parameterfixierer. B2 macht einen Parameterfixierer für Sie .
Dies ist jedoch nicht der Punkt von B2. Der Punkt von B2 ist der:
%Vor%liefert das gleiche Ergebnis wie
%Vor%B2 wandelt eine Funktion von zwei Parametern in zwei Funktionen mit jeweils einem Parameter um .
Macht Sinn?
Die Variable x ist eine nicht gebundene Variable. Dies stellt ein Argument für die zurückgegebene Funktion vom Aufruf von Bind2nd
dar.
Ein paar Stunden mit Scheme würden Ihnen hier helfen, aber versuchen Sie das.
Wenn Sie Bind2nd
aufrufen, ist das zurückgegebene Ergebnis eine Funktion. Diese Funktion ist als
Nun, da Sie die obige Variable einer Variablen zugewiesen haben, sagen wir lambda
, können Sie diese Funktion über die lambda
Variable
Das in x
definierte Bind2nd
ist nur eine Variable, die ein Argument für die Funktion darstellt, die an Sie zurückgegeben wird.
Ein Lambda-Ausdruck ist eine Abkürzung für eine anonyme Methode. Wie die anonyme Methode wird der Lambda-Ausdruck den Delegattypen zugewiesen. Alle Bedingungen, die für anonyme Methoden gelten, gelten auch für Lambda-Ausdrücke.
= & gt; heißt Lambda-Operator, der als "goes to" gelesen wird. Die linke Seite des Operators gibt die durch Komma getrennten Eingabeparameter an, und die rechte Seite gibt einen Ausdrucks- oder Anweisungsblock an, der als Lambda-Text bezeichnet wird. (p1, p2, p3, ... pN) = & gt; Ausdruck Wenn Sie nur einen Parameter haben, können Sie die Klammer überspringen p1 = & gt; Ausdruck;
Ich habe einen kleinen Blog geschrieben, der Lambda-Ausdruck hier erklärt Lambda-Ausdruck
>