榆树:在模型中设置初始化

时间:2016-10-16 12:07:29

标签: elm

我是榆树的新手。我想要做的是我尝试使用set而不是List初始化模型,但是给定elm没有任何set的初始化器(这是一种耻辱,如果它是#的话它会很好# {1,2,3},如同在Clojure中一样,这是有问题的。

使用代码(榆木教程代码,稍微修改一下),我正在尝试

main =
  App.program
    { init = init "cats"
    , view = view
    , update = update
    , subscriptions = subscriptions
    }



-- MODEL


type alias Model =
  { topic : String
  , gifUrl : String
  , error : String
  , history : Set String
  }


init : String -> (Model, Cmd Msg)
init topic =
  ( Model topic "waiting.gif" "" Set.fromList([topic])
  , getRandomGif topic
  )

这会引发编译错误:

Function `Model` is expecting 4 arguments, but was given 5.

这很奇怪,因为它不会在Elm repl中抛出错误,并且在大多数情况下都是有效的代码。

我将如何实现这一目标?

1 个答案:

答案 0 :(得分:4)

问题源于您使用括号。

x==0

您不需要在Elm的括号中包含参数,但是您需要将Model topic "waiting.gif" "" Set.fromList([topic]) -- is the same as: Model topic "waiting.gif" "" Set.fromList [topic] 的整个第四个参数括起来,以便编译器知道它是一个参数。将其更改为此,您应该全部设置:

Set.fromList [topic]