Модель слияния с расширяемой записью в Elm 0.19 - PullRequest
0 голосов
/ 22 февраля 2019

Я определяю расширяемую запись

type alias Saved a =
  { a
    | x : Int
    , y : String
  }

и Model на основе этого:

type alias Model =
  Saved { z : Float }

Затем загружаю и декодирую JSON в Saved {}:

let
  received =
    Decode.decodeValue savedDecoder json |> Result.toMaybe
in
(Maybe.map
  (\r ->
    { model
    | x = r.x
    , y = r.y
    }
  )
  received
  |> Maybe.withDefault model

Есть ли способ объединить существующую model с расширяемой записью received, которая не требует копирования каждого поля по отдельности, аналогично функции ES6 Object.assign?

1 Ответ

0 голосов
/ 23 февраля 2019

Вот так все и делается.При желании вы можете сопоставить шаблон с параметром:

Maybe.map
  (\{x, y} ->
    { model
    | x = x
    , y = y
    }
  )

...