如何从列表和A(a - > bool)构建选择列表

  • 本文关键字:列表 bool 构建 选择 elm
  • 更新时间 :
  • 英文 :


我正在使用ELM-SPA示例模型,并且我有一个包含List RecipeSession以及一个包含recipeID

的模型

我想构建一个选择列表,该清单会选择列表中的食谱的配方。

理想情况下,我会使用以下内容:

SelectList.selectFromList : (a -> Bool) -> List a -> SelectList a

我的情况我会做:

SelectList.selectFromList (recipe -> recipe.id == recipeID) session.recipes

我做了这样的事情:

selectFromList : (a -> Bool) -> List a -> Maybe (SelectList a)
selectFromList isSelectable list = 
    case list of
        first :: rest ->
            SelectList.fromLists [] first rest
                |> SelectList.select isSelectable
                |> Just
        [] ->
            Nothing

我还添加了:

prev : SelectList a -> Maybe a
prev list =
    SelectList.before list
        |> List.reverse
        |> List.head

next : SelectList a -> Maybe a
next list =
    SelectList.after list
        |> List.head

我整理了这个快速的Ellie,它说明了我认为实现您想要的步骤所需的步骤。它当然没有优化甚至惯用性。

https://ellie-app.com/4tjvgscwxa1/0

firstPartialList = takeWhile condition myList
selected = Maybe.withDefault "" (getAt (length firstPartialList) myList)
secondPartialList = drop ((length firstPartialList) + 1) myList
mySelectList = SelectList.fromLists firstPartialList selected secondPartialList
condition = (item -> item /= otherItem)

myList = ["a", "b", "c", "d"]
otherItem = "b"

selectList不公开selectfromlist,您确定链接正确吗?

最新更新