如何将 scala 中的序列 convert/wrap 转换为 Option[Seq] 以便如果列表为空,则 Option 为 None

How to convert/wrap a sequence in scala to an Option[Seq] so that if the list is empty, the Option is None

我可以用 if 语句来做到这一点,但可能有 "scala" 方法来做到这一点。

  def notScalaConv(in: Seq[String]): Option[Seq[String]] = {
    if (in.isEmpty)
      None
    else
      Option(in)
  }

你为什么不简单地做 val seqOpt = Option(yourSeq),这会给你 Option(Seq[String])

  val nonEmpty = Seq("somevalue")
  val empty = Seq()

  val seqOpt = List(Option(empty), Option(nonEmpty)) map {
    case seq if seq.get.isEmpty => None
    case x => x
  }

  assert(seqOpt.head == None)
  assert(seqOpt(1) == Option(nonEmpty))

您可以将 Seq 提升为 Option,然后对其进行过滤。像这样:

 def notScalaConv(in: Seq[String]): Option[Seq[String]] = {
     Option(in).filter(_.nonEmpty)
 }