在 Scala 中,我有List
一个可选的Option
. 例如,当您for
对 a 使用理解List
并且您的 yield 返回a 时,就会出现这种情况Option
。在我的例子中,我正在处理一个 JSON 对象并for
在字段列表 ( List[JField]
) 上使用理解。
打开列表并映射List()
到None
和List(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 的惯用方法是什么?