web-dev-qa-db-fra.com

Que signifie la syntaxe de code "! []" Elm dans Todomvc

Venant de réagir, j'apprends à comprendre Elm.

Dans le exemple de code Todomvc , il y a l'extrait de code suivant:

-- 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?

Ce que je (pense) comprendre, c'est que la fonction update prend un msg de type Msg et un model de type Model, et renvoie un Tuple contenant un Model et un Cmd Msg.

Mais comment dois-je lire la déclaration de retour?

model ! []

Que signifie cette déclaration? retourner une "modèle [quelque chose] de liste vide"?
Ai-je raté quelque chose dans les documents où cela est expliqué? (Googler "Elm!" Ne m'a pas conduit loin :)

53
wintvelt

Mise à jour pour Elm 0.19

Elm 0.19 a supprimé l'opérateur de point d'exclamation. Vous devez maintenant construire le Tuple manuellement, comme dans (model, Cmd.none).

Réponse originale pour l'orme 0,18

Le point d'exclamation dans model ! [] n'est qu'une fonction abrégée pour (model, Cmd.batch []), qui est le type renvoyé par les instructions update typiques. Il est défini ici

62
Chad Gilbert

Notez que cette syntaxe disparaît dans la prochaine version d'Elm (0.19), alors ne prenez pas l'habitude de l'utiliser ;-)

Vous pouvez utiliser aujourd'hui, et avec 0,19:

update : Msg -> Model -> ( Model, Cmd Msg )
update msg model =
  case msg of
    NoOp ->
      (model, Cmd.none)
7
Simon H