ELM更新模型中的两个字段

时间:2018-11-17 14:55:56

标签: functional-programming elm

如何一次更新模型中的两个字段? 现在,我已要求返回一个别名为{price:Float,productId:Int}的别名 我需要更新模型中的两个字段,例如model.price和model.productId

我正在寻找类似的东西,但它不起作用(ofc)

    case maybeProduct of
        Just product ->
       ( { model | price = product.price && 
           model | productId = product.productId}
            , Cmd.none
            )
        Nothing ->
            ( model
               , Cmd.none
             )

我找到了一些信息,可以在其中创建两个功能的建议 (模型->产品->模型),然后执行以下操作:

setPrice : Model -> Product -> Model
setPrice model product =
    { model | price = product.price }

setProductId : Model -> Product -> Model
setProductId model product =
    { model | companyId = product.productId }

                Just product ->
                        let
                            newModel =
                                product
                                    |> setPrice model
                                    |> setProductId model
                        in
                        ( newModel
                        , Cmd.none
                        )
                    Nothing ->
                        ( model
                           , Cmd.none
                         )

但是有些东西不起作用。看起来产品没有传递每个功能

我收到

  

参数是:

Model
     

但是(|>)将其传递给以下函数:

{ companyId : Int, price : Float }

我在哪里弄错了?还是有不同的方法可以更新模型中的两个字段?

1 个答案:

答案 0 :(得分:6)

如何一次更新两个字段:

执行以下操作(这不包括命令-您可以根据需要添加命令):

{ model | price = new_price, productId = newProductId}

(我自己是在学习ELM,如果那是不正确的,那么我就是apol)。

文档:

这里是@JackLeow非常友善发布的链接:https://elm-lang.org/docs/records#updating-records