f# - 如果列表为空,如何修复 List.head 中的异常 hell

标签 f# f#-interactive f#-3.0

我需要将列表的头部传递给 List.fold。如果 departments 为空,则处理以下情况的 ArgumentException 的功能解决方案是什么。

let result = employees 
|> List.fold (...) (List.head departments)

在这里,部门是一个列表。为了清楚起见,我没有在此处指定折叠功能。

编写匹配模式会使我的代码变得笨拙。

最佳答案

您需要检查 departments 列表并提供默认值(如果它为空)。您可以为此提供辅助函数:

let headOrDefault def d =
    match d with
    | [] -> def
    | _ -> List.head d

你可以这样使用:

let result = 
    employees 
    |> List.fold (...) (headOrDefault defDep departments)

关于f# - 如果列表为空,如何修复 List.head 中的异常 hell ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28569741/

相关文章:

F# 我想过滤我的输出

f# - 这段代码是如何工作的

visual-studio-2012 - 在 Visual Studio 2012 中通过 F# Interactive 访问数据文件

f# - 创建元组 pointfree

.net - 将F#函数传递给IEnumerable.Where与IEnumerable.All

c# - 在 F# 交互中获取调试器上下文

f# - 列表 except - 过滤不等于另一个列表的任何 item.A 的字符串序列

f# - 从 F# 函数构建 Linq 表达式,以传递给 C#

msbuild - 使用新的 F# 3.1.1 独立安装程序时如何在 CI 服务器上使用 F#

types - 如何直接在 Measure 类型本身上通过静态成员 New 生成 bool 成员类型?