Todomvc中的"![]"榆树代码语法是什么意思

win*_*elt 52 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?
Run Code Online (Sandbox Code Playgroud)

我(我想)理解的是,该update函数接受一个msg类型Msg和一个model类型Model,并返回一个包含a Model和a 的元组Cmd Msg.

但是我应该如何阅读return语句?

model ! []
Run Code Online (Sandbox Code Playgroud)

这句话是什么意思?返回"模型[某事]空列表"?
我在文档中遗漏了哪些内容?(谷歌搜索"榆树!"没有让我走得远:)

Cha*_*ert 62

更新榆木0.19

Elm 0.19删除了感叹号操作符.您现在必须手动构造元组,如(model, Cmd.none).

榆木0.18的原始答案

感叹号model ! []只是一个简写函数(model, Cmd.batch []),它是典型update语句返回的类型.它在这里定义

  • 你可以使用Elm Packages Fancy Search(转到[Elm Packages](http://package.elm-lang.org/)并点击[Fancy Search](http://klaftertief.github.io/elm-search /))找到这样的函数.[在这里你可以搜索`!`](http://klaftertief.github.io/elm-search/?q=!)并启动正确的功能. (13认同)
  • 这是榆树的主要问题之一.如何在网上搜索感叹号"!"?我试着搜索"榆树感叹号"的十种变体.我甚至搜索过"haskell感叹号".为什么我们不能写`(model,Cmd.batch [])`原样?这让它变得不那么神奇了.即使你必须让它"更少cody",那么不应该使用像``someOperator``这样的单词来操作运算符?只是一些想法. (11认同)
  • 你榆树的人非常快.:) (5认同)
  • FWIW我发现[此讨论](https://groups.google.com/d/msg/elm-discuss/AXJdAKf4Mbg/MSuw9Y4NCwAJ)很有帮助. (3认同)

Sim*_*n H 7

请注意,此语法将在下一版本的Elm(0.19)中消失,因此不要养成使用它的习惯;-)

你今天可以使用,用0.19:

update : Msg -> Model -> ( Model, Cmd Msg )
update msg model =
  case msg of
    NoOp ->
      (model, Cmd.none)
Run Code Online (Sandbox Code Playgroud)

  • @Astrowie而不是'模特![cmd1,cmd2]`你用`(model,Cmd.batch [cmd1,cmd2])` (2认同)