gpt4 book ai didi

scala - 打开带有 0 或 1 个选项的列表的最佳方法是什么?

转载 作者:行者123 更新时间:2023-12-01 23:02:52 25 4
gpt4 key购买 nike

在 Scala 中,我有一个 List带有可选的 Option .例如,当您使用 for 时会出现这种情况。上的领悟List并且您的 yield 返回 Option .就我而言,我正在处理一个 JSON 对象并使用 for对字段列表的理解 ( List[JField] )。

打开列表和 map 的最佳方式是什么List()NoneList(Some(a))Some(a) ?

第一种方法是

def headOrNone[A](list:List[Option[A]]) = 
list match {
case Nil => None
case a::Nil => a
}

另一种方法
def headOrNone[A](list:List[Option[A]]) = list.headOption.getOrElse(None)

第三种方法( headOption 实现的变体)
def headOrNone[A](list:List[Option[A]]) = if (list.isEmpty) None else list.head

我个人更喜欢第三种方法。这个函数有比 headOrNone 更好的名字吗?什么是写它的惯用 Scala 方式?

最佳答案

您正在解决一个可能不应该被创建的问题。相反,你可能想要

for (x <- list) yield f(x)  // Yields Option

成为
list.flatMap(f)

然后您的列表中将有零或一件事开始(您可以使用 headOption 提取)。

关于scala - 打开带有 0 或 1 个选项的列表的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12448269/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com