Ich versuche zu verstehen, Ulmen Typ Signaturen. Was liefert diese Funktion genau? Es scheint eine Funktion zu sein, die keine Argumente akzeptiert und zurückgibt ...Verständnis Elm-Typ Unterschrift Rückgabetypen
route : Parser (Page -> a) a
Ich versuche zu verstehen, Ulmen Typ Signaturen. Was liefert diese Funktion genau? Es scheint eine Funktion zu sein, die keine Argumente akzeptiert und zurückgibt ...Verständnis Elm-Typ Unterschrift Rückgabetypen
route : Parser (Page -> a) a
Als eine Lernübung für mich werde ich versuchen, dies zu beantworten. Andere werden einspringen, wenn ich etwas falsch mache.
Ich bin sicher, Sie werden verwendet, um so etwas wie
type Person = Adult String | Child String Age
Kind ist ein Typ, der zwei Parameter übernimmt. Parser ist das Gleiche. Aber es ist definition ziemlich beeindruckend ist
type Parser a b =
Parser (State a -> List (State b))
type alias State value =
{ visited : List String
, unvisited : List String
, params : Dict String String
, value : value
}
Das heißt, Sie sehen, wie Parser ist letztlich ein Wrapper um eine Funktion von einem Staat zu einer Liste von Staaten. Letztendlich wird eine Liste von "nicht besuchten" Strings oder Params übergeben; es wird jedes einzelne "besuchen" und das Ergebnis wird zum endgültigen "Wert" kombiniert.
Als nächstes beachten Sie, dass während Parser zwei Parameter Typ nimmt - a
, b
-parseHash
definiert ist
parseHash : Parser (a -> a) a -> Location -> Maybe a
Also, Ihre ursprüngliche
route : Parser (Page -> a) a
ist zu haben, sein
route : Parser (Page -> Page) Page
zu überprüfen.
zu Ihrer ursprünglichen Frage zurückzukehren, also route
ein Parser ist (das ist ein sehr allgemeines Ziel), die Anweisungen, wie von einem Page
zum anderen gehen kapselt, und kann verwendet werden - über parseHash - zu sagen, was Page
, um zum nächsten zu gehen, und das ist natürlich, was Sie von einem Router erwarten würden.
Hoffe, dass Sie damit beginnen
Danke. Das hat mich in die richtige Richtung gelenkt. – Matt
Können Sie einen Verweis hinzufügen, woher das kommt? – robertjlooby
Zeile 22 von [dieser Beispiel-App] (https://github.com/AdrianRibao/elm-spa-example/blob/master/main.elm). danke – Matt