2016-05-25 27 views
38

Provenendo da una reazione, sto imparando a capire Elm.Cosa significa "! []" Sintassi del codice Elm in Todomvc significa

Nel Todomvc example code, v'è il seguente frammento di codice:

-- How we update our Model on a given Msg? 
update : Msg -> Model -> (Model, Cmd Msg) 
update msg model = 
    case msg of 
    NoOp -> 
     model ! []  <-- What is this? 

Quello che (credo) di capire, è che la funzione update prende in un msg di tipo Msg e un model di tipo Model, e restituisce una tupla contenente e Cmd Msg.

Ma come devo leggere la dichiarazione di reso?

model ! [] 

Cosa significa questa affermazione? restituire un "modello [qualcosa] lista vuota"?
Ho perso qualcosa nei documenti in cui questo è spiegato? (Googling "olmo" non ha ottenuto me molto :)

risposta

39

Il punto esclamativo in model ! [] è solo una funzione a breve portata di mano per (model, Cmd.batch []), che è il tipo restituito da tipici update dichiarazioni. It is defined here

+1

Grazie per la spiegazione. Mi sono imbattuto nel criptico '(!): Model -> List (Cmd msg) -> (model, Cmd msg)' line, ma non sono riuscito a tradurlo in 'model! [] 'Speriamo che altri documenti seguiranno. Sembra una lingua promettente finora. – wintvelt

+7

Questo è uno dei maggiori problemi con l'olmo. Come si cerca sul web un punto esclamativo "!"? Ho provato a cercare circa dieci variazioni di "punto esclamativo elm-lang". Ho anche cercato "haskell punto esclamativo". Perché non possiamo scrivere '(model, Cmd.batch [])' come è? Lo rende molto meno magico. Anche se devi renderlo "meno cody", allora non dovresti inserire l'operatore con una parola come "someOperator''? Solo alcuni pensieri. – abhinav

+11

Puoi usare la ricerca Fancy di Elm Packages (vai a [Elm Packages] (http://package.elm-lang.org/) e clicca su [Fancy Search] (http://klaftertief.github.io/elm- cerca /)) per trovare funzioni del genere. [Qui puoi cercare su '!'] (Http://klaftertief.github.io/elm-search/?q=!) E richiama la funzione corretta. –