Jestem bardzo nowy i obecnie próbuję uczyć się Wiązu. Pochodzę z JS/React i nie miałem żadnego doświadczenia z RFP.Składnia "typu" wiązu - skąd pochodzi wartość?
Jestem w przewodniku prawo tutaj: http://guide.elm-lang.org/architecture/user_input/text_fields.html
Część mam problemy z jest update
i 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) ]
]
Zacznijmy deklaracji Msg. Przewodnik mówi:
ona jeden argument, w tym przypadku Zmiana funkcji, która była tworzony podczas zadeklarowaliśmy typ o błędzie:
Zmiana: String -> Msg
I don Zobacz, jak to się stało:
type Msg
= Change String
Jak zdefiniowaliśmy tutaj funkcję zmiany? Jak zdefiniowaliśmy działanie tej funkcji? Dla mnie wygląda na to, że właśnie zadeklarowaliśmy typ Msg, który w jakiś sposób zawiera to, co jest Change
i typ String
.
Moje drugie pytanie dotyczy aktualizacji:
update : Msg -> Model -> Model
update msg model =
case msg of
Change newContent ->
{ model | content = newContent }
Dla mnie to wygląda aktualizacja jest funkcja wyższego rzędu, która zajmuje Msg
i zwraca funkcję Model -> Model
. Ale wtedy definiujemy funkcję z dwoma parametrami. Czy Msg -> Model -> Model
oznacza po prostu, że wszystkie oprócz ostatniej części są parametrami?
Wtedy nazywamy Change
funkcję:
Change newContent ->
{ model | content = newContent }
Co mi się nie dostać się tam jest strzałka. Zwykle strzałka przychodzi po definicji paramu. Ale tutaj mamy wynik funkcji przed ->
.
Mam nadzieję, że moje pytania mają sens, po prostu jestem bardzo zdezorientowany tym (prawdopodobnie niesamowitym) językiem.