Functional programming ELM更新模型中的两个字段

Functional programming ELM更新模型中的两个字段,functional-programming,elm,Functional Programming,Elm,如何一次更新模型中的两个字段? 现在我有一个请求,它返回一个带有{price:Float,productId:Int}的别名 我需要更新模型中的两个字段,如model.price和model.productId 我正在寻找类似的东西,但它不起作用(ofc) 我发现了一些信息,其中建议我可以创建两个函数 (模型->产品->模型)并执行以下操作: setPrice : Model -> Product -> Model setPrice model product = { mod

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

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

我发现了一些信息,其中建议我可以创建两个函数 (模型->产品->模型)并执行以下操作:

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 }
我哪里错了?或者可能有不同的方法更新模型中的两个字段?

如何一次更新两个字段: 这样做(顺便说一下,这不包括命令-您可以将其添加到中以满足您的需求):

如果要添加命令,则可以执行以下操作:

({ model | price = new_price, productId = newProductId}, nameOfYourCommand)
文档:
@JackLeow非常友好地发布了一个链接:

您应该看看Elm文档,这是他们在教程中首先介绍的内容之一:
{ model | price = new_price, productId = newProductId}
({ model | price = new_price, productId = newProductId}, nameOfYourCommand)