Ich bin sehr neu und versuche gerade Elm zu lernen. Ich komme von JS/React und hatte noch keine RFP Erfahrung.Elm "Typ" -Syntax - Woher kommt der Wert?
Ich bin im Guide hier: http://guide.elm-lang.org/architecture/user_input/text_fields.html
Der Teil Ich habe Probleme mit sich update
und view
:
-- UPDATE
type Msg
= Change String
update : Msg -> Model -> Model
update msg model =
case msg of
Change newContent ->
{ model | content = newContent }
-- VIEW
view : Model -> Html Msg
view model =
div []
[ input [ placeholder "Text to reverse", onInput Change ] []
, div [] [ text (String.reverse model.content) ]
]
Beginnen wir mit der Msg Erklärung beginnen. Der Führer sagt:
Es ein Argument, in diesem Fall ist die Änderungsfunktion, die war erstellt, als wir die Nachricht Typ deklariert:
ändern: String -> Msg
I don Wie sieht das hier aus?
type Msg
= Change String
Wie haben wir hier eine Change-Funktion definiert? Wie haben wir definiert, wie diese Funktion funktioniert? Für mich sieht es so aus, als hätten wir gerade den Typ von Msg deklariert, der irgendwie was auch immer Change
enthält und der Typ String
ist.
Meine zweite Frage ist über das Update:
update : Msg -> Model -> Model
update msg model =
case msg of
Change newContent ->
{ model | content = newContent }
Für mich sieht aus wie eine Update Funktion höherer Ordnung, das eine Msg
nimmt und gibt eine Funktion Model -> Model
. Dann definieren wir eine Funktion mit zwei Parametern. Bedeutet Msg -> Model -> Model
nur, dass alle außer dem letzten Teil Parameter sind?
Dann rufen wir die Change
Funktion:
Change newContent ->
{ model | content = newContent }
Was ich nicht bekommen, gibt es den Pfeil. Normalerweise kommt der Pfeil nach einer Paramdefinition. Aber hier haben wir das Ergebnis einer Funktion vor der ->
.
Ich hoffe meine Fragen ergeben Sinn, ich bin nur sehr verwirrt mit dieser (vermutlich ehrfürchtigen) Sprache.