【问题标题】:ELM update two fields in modelELM 更新模型中的两个字段
【发布时间】:2018-11-17 14:55:56
【问题描述】:

如何一次更新模型中的两个字段? 现在我请求返回一个别名 {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 }

我哪里错了?或者也许有不同的方法来更新模型中的两个字段?

【问题讨论】:

标签: functional-programming elm


【解决方案1】:

如何一次更新两个字段:

做这样的事情(顺便说一下,这不包括命令 - 你可以添加它以满足你的要求):

{ model | price = new_price, productId = newProductId}

如果你想添加命令,那么你可以这样做:

({ model | price = new_price, productId = newProductId}, nameOfYourCommand)

文档:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-06
    相关资源
    最近更新 更多