当前位置:  开发笔记 > 编程语言 > 正文

榆树 - 更新列表中的元素

如何解决《榆树-更新列表中的元素》经验,为你挑选了1个好方法。

我刚刚开始在Elm编程并且遇到了困难:

我想有一个方法可以更新某个索引列表中的元素字段.

我的签名看起来像这样:

updateElement : List (ID, Task) -> Int -> List (ID, Task)

有:

type alias Task =
  { description : String, focus : Bool}

在这种情况下,我想将任务的布尔(焦点)设置为给定为true的索引,将列表中的所有其他任务设置为false.

我已经尝试过使用Elm中的数组,但后来我必须使用Maybe,并且不认为这是一个很好的解决方案.

我想我将不得不使用'map'来更改列表中的元素,但我不知道如何在特定索引处更改它.

谢谢!



1> robertjlooby..:

现在您已经澄清了您的问题,真正的答案是Chad发布的两个更新的组合

updateElement : List (ID, Task) -> Int -> List (ID, Task)
updateElement list indexToFocusOn =
  let
    toggle index (id, task) =
      if index == indexToFocusOn then
        (id, { task | focus = true })
      else
        (id, { task | focus = false })
  in
    List.indexedMap toggle list

推荐阅读
大大炮
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有