Ich lerne gerade Jessod / Haskell.
Im folgenden Code ( Ссылка ) gibt es zwei Dinge, die ich nicht verstehe (und eine nachfolgende Frage ).
{..}
- was heißt das? (Es ist eine harte Zeit zu googeln.) person@Person
- Was bewirkt das @
-Zeichen? code:
%Vor%Für die Punkte 1 und 2, denke ich, beziehen Sie sich auf die Zeile
%Vor% Das {..}
kommt von RecordWildcards
Erweiterung. Grundsätzlich werden alle Felder des Person
Datentyps in den Geltungsbereich einbezogen. Deshalb können Sie name
und age
in der obigen Hamlet-Vorlage verwenden.
Das @
dient als Alias. Jedes Mal, wenn Sie id@deconstructor_expr
sehen, können Sie id
für den gesamten Wert verwenden, der von deconstructor_expr
dekonstruiert wird. Zum Beispiel können Sie
und a
sind die tail
der Argumentliste, solange die Liste mindestens 2 Elemente enthält (dh f
ist tail
für Listen mit mehr als 2 Elementen).
Ohne diese beiden müsste die gesamte Funktion in
geändert werden %Vor% Beachten Sie, dass name
und age
Funktionen aus dem Datensatz in das spezifische Feld sind und das bedeutet, dass Sie andere Namen für die Werte verwenden müssen (die '
-enden Variablen). Da wir nicht mehr @
verwenden, benötigen wir separate Zeilen für person
und für die Felder.
Eine andere Alternative wäre
%Vor% Sie müssen weiterhin die Funktionen name
und age
aufrufen.
Für Punkt 3 besteht die Möglichkeit, im IRC auf #haskell zu gehen und dort zu fragen. Wie auch immer, die gleichen Leute von hier sind hier, es ist keine Mühe zu fragen.
Fügen Sie anderen Antworten hinzu, um nach einer nicht-googlen Syntax zu suchen. symbolhound.com .