web-dev-qa-db-ja.com

Todomvcでの "![]" Elmコード構文の意味

反応から来て、私はエルムを理解することを学んでいます。

Todomvcサンプルコード には、次のコードスニペットがあります。

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

私が(私が思う)理解していることは、update関数がタイプmsgMsgとタイプmodelModelを取り込むことです。 _、ModelCmd Msgを含むタプルを返します。

しかし、どのようにreturnステートメントを読む必要がありますか?

model ! []

このステートメントはどういう意味ですか? 「モデル[何か]空のリスト」を返しますか?
これが説明されているドキュメントで何かを見逃しましたか? (グーグル "Elm!"は私を遠くに連れて行きませんでした:)

53
wintvelt

Elm 0.19のアップデート

Elm 0.19は感嘆符演算子を削除しました。 (model, Cmd.none)のように、タプルを手動で作成する必要があります。

Elm 0.18の元の回答

model ! []内の感嘆符は(model, Cmd.batch [])の省略形にすぎません。これは、一般的なupdateステートメントから返されるタイプです。 ここで定義

62
Chad Gilbert

この構文はElmの次のバージョン(0.19)で廃止されることに注意してください。そのため、この構文を使用する習慣をつけないでください;-)

あなたは今日、そして0.19で使うことができます:

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