我正在使用ELM-SPA示例模型,并且我有一个包含List Recipe
的Session
以及一个包含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,您确定链接正确吗?