如何以Scala方式执行此操作:从选项[Seq[String]]获取第一个元素
如何以Scala方式执行此操作:如果第一个元素是如何以Scala方式执行此操作:从选项[Seq[String]]获取第一个元素,scala,Scala,如何以Scala方式执行此操作:如果第一个元素是Some[String],并且至少有一个字符串,则从Option[Seq[String]返回Some[String],否则返回NoneheadOption对Seq执行您想要的操作,而选项上的flatMap可以完成其余工作: def first[A](maybe: Option[Seq[A]]): Option[A] = maybe.flatMap(_.headOption) 这与以下内容基本相同,但更为简洁和惯用: def first[A](ma
Some[String]
,并且至少有一个字符串,则从Option[Seq[String]
返回Some[String]
,否则返回NoneheadOption
对Seq
执行您想要的操作,而选项上的flatMap
可以完成其余工作:
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
}
请注意,这两个版本都比您请求的版本更通用,但是如果您只希望字符串可以删除类型参数并将替换为字符串。在您的应用程序中,无和空Seq()
之间有什么区别?如果没有一个,考虑放弃<代码>选项<代码> altoCuth.酷。我不知道该怎么办。
def getHead(strings: Option[Seq[String]]): Option[String] = {
strings.collectFirst {
case seq if seq.nonEmpty => seq.head
}
}