如何以Scala方式执行此操作:从Option [Seq [String]]中获取第一个元素

NSF*_*NSF 1 scala

如何做到这一点在斯卡拉方式:返回的第一个元素是Some[String]Option[Seq[String]],如果是Some[Seq[String]],有至少一个字符串,否则返回None

Tra*_*own 7

headOption你想要做的是什么Seq,并且flatMapOption可以做的其余部分:

def first[A](maybe: Option[Seq[A]]): Option[A] = maybe.flatMap(_.headOption)
Run Code Online (Sandbox Code Playgroud)

这基本上与以下相同,但更简洁和惯用:

def first[A](maybe: Option[Seq[A]]): Option[A] = maybe match {
  case Some(xs) => xs.headOption
  case None => None
}
Run Code Online (Sandbox Code Playgroud)

请注意,两个版本都比您请求的版本更通用,但您可以删除类型参数A,String如果您只希望它使用字符串,则替换为.