我需要将列表的头部传递给List.fold。如果ArgumentException
为空,则对于以下情况处理departments
的功能解决方案是什么。
let result = employees
|> List.fold (...) (List.head departments)
这里,部门是一个列表。为了清楚起见,我没有在这里指定折叠功能。
编写匹配模式会使我的代码变得尴尬。
答案 0 :(得分:3)
您需要检查departments
列表并提供默认值(如果它为空)。你可以为它提供一个辅助函数:
let headOrDefault def d =
match d with
| [] -> def
| _ -> List.head d
你可以这样使用:
let result =
employees
|> List.fold (...) (headOrDefault defDep departments)
答案 1 :(得分:1)
如果departments
无效,您可以使用Fsharpx.Collections提供的NonEmptyList<'T>
。
let result = employees
|> List.fold (...) (NonEmptyList.head departments)
您不需要处理ArgumentException,因为NonEmptyList.head永远不会失败。