如何更新列表的一个元素

How to update one element of a list

我有一个 update 函数,它使用 postID 和一个标题来更新我的 post。

我想遍历我的 post 以找到 post 并更新它的值。我尝试使用 List.map 但我不知道该放在哪里。这是我想要的伪代码:

update action model =
  case action of
    UpdateTitle postID title ->
      //something like this:
      for post in model.posts :
        if post.id == postID then
          { post | title = title }

      ( model.posts , Effects.none )

您可以使用 List.map,传入映射函数,该函数仅使用匹配的 ID 更新 post。

update action model =
  case action of
    UpdateTitle postID title ->
      ( List.map (setTitleAtID title postID) model.posts , Effects.none )

setTitleAtID title postID post =
  if post.id == postID then
    { post | title = title }
  else
    post