从案例类中提取Option而忽略None

mpl*_*lis 1 scala

我有一系列像这样的案例类

case class Foo(..., bar: Option[A], ...)
Run Code Online (Sandbox Code Playgroud)

我想把它变成一个Seq[(Foo, A)],在那里我提取Afrom barSeq唯一包含Foo的地方bar不是None.这是我现在的实现,但它调用的事实get使我认为有更好的方法来做到这一点:

val seqOfTuples = seqOfFoos.collect {
    case foo if foo.bar.isDefined => (foo, foo.bar.get)
}
Run Code Online (Sandbox Code Playgroud)

Jen*_*alm 8

val seqOfTuples = seqOfFoos.collect {
  case f @ Foo(_, Some(a), _) => (f, a)
}
Run Code Online (Sandbox Code Playgroud)

您可能需要调整下划线的数量,具体取决于Foo有多少其他参数.