【发布时间】:2016-05-20 18:11:07
【问题描述】:
我很新,目前正在尝试学习 Elm。我来自 JS/React,之前没有任何 RFP 经验。
我在此处的指南中: http://guide.elm-lang.org/architecture/user_input/text_fields.html
我遇到问题的部分是update 和view:
-- UPDATE
type Msg
= Change String
update : Msg -> Model -> Model
update msg model =
case msg of
Change newContent ->
{ model | content = newContent }
-- VIEW
view : Model -> Html Msg
view model =
div []
[ input [ placeholder "Text to reverse", onInput Change ] []
, div [] [ text (String.reverse model.content) ]
]
让我们从 Msg 声明开始。指南说:
它有一个参数,在本例中是 Change 函数 在我们声明 Msg 类型时创建:
更改:字符串 -> 消息
我不明白这是怎么发生的:
type Msg
= Change String
我们如何在这里定义一个 Change 函数?我们如何定义该功能的工作方式?在我看来,我们似乎刚刚声明了 Msg 的类型,它以某种方式包含 Change 和 String 类型。
我的第二个问题是关于更新的:
update : Msg -> Model -> Model
update msg model =
case msg of
Change newContent ->
{ model | content = newContent }
在我看来,update 是一个高阶函数,它接受 Msg 并返回函数 Model -> Model。但随后我们定义了一个带有两个参数的函数。 Msg -> Model -> Model 是否仅表示除最后一部分之外的所有部分都是参数?
然后我们调用Change函数:
Change newContent ->
{ model | content = newContent }
我不明白的是箭头。通常箭头出现在参数定义之后。但是这里我们在->之前有一个函数的结果。
我希望我的问题是有意义的,我只是对这种(可能很棒的)语言感到非常困惑。
【问题讨论】: