如何以 Scala 方式执行此操作:将第一个元素返回为Some[String]
from Option[Seq[String]]
,如果它是Some[Seq[String]]
并且至少有一个字符串,否则返回None
问问题
3156 次
2 回答
7
headOption
在 上做你想做的事Seq
,剩下flatMap
的可以做:Option
def first[A](maybe: Option[Seq[A]]): Option[A] = maybe.flatMap(_.headOption)
这与以下内容基本相同,但更简洁和惯用:
def first[A](maybe: Option[Seq[A]]): Option[A] = maybe match {
case Some(xs) => xs.headOption
case None => None
}
请注意,这两个版本都比您要求的更通用,但是如果您只希望它与字符串一起使用A
,您可以删除类型参数并替换为。String
于 2013-08-29T01:23:28.437 回答
0
def getHead(strings: Option[Seq[String]]): Option[String] = {
strings.collectFirst {
case seq if seq.nonEmpty => seq.head
}
}
于 2020-04-03T19:27:30.590 回答