F# 如果列表为空,如何修复List.head中的异常地狱
我需要将列表的开头传递给list.fold。如果F# 如果列表为空,如何修复List.head中的异常地狱,f#,f#-interactive,f#-3.0,F#,F# Interactive,F# 3.0,我需要将列表的开头传递给list.fold。如果部门为空,对于以下情况,处理ArgumentException的功能解决方案是什么 let result = employees |> List.fold (...) (List.head departments) 这里是一个部门列表。为了清楚起见,我没有在这里指定fold函数 编写匹配模式会使我的代码变得很糟糕。您需要检查部门列表,如果该列表为空,则提供默认值。您可以为此提供一个助手函数: let headOrDefault def d
部门
为空,对于以下情况,处理ArgumentException
的功能解决方案是什么
let result = employees
|> List.fold (...) (List.head departments)
这里是一个部门列表。为了清楚起见,我没有在这里指定fold函数
编写匹配模式会使我的代码变得很糟糕。您需要检查
部门
列表,如果该列表为空,则提供默认值。您可以为此提供一个助手函数:
let headOrDefault def d =
match d with
| [] -> def
| _ -> List.head d
您可以这样使用:
let result =
employees
|> List.fold (...) (headOrDefault defDep departments)
如果
departments
不能为空,您可以使用NonEmptyListI。我真的不明白为什么let result=将departments与[]->匹配(d::ds)->List.fold(…)d
应该是awkard-我看不出有地狱;)
let result = employees
|> List.fold (...) (NonEmptyList.head departments)