2014-02-24 44 views
1

我有case類的這樣的提取選項而忽略了無

case class Foo(..., bar: Option[A], ...) 

的順序,我希望把它變成一個Seq[(Foo, A)],我在那裏提取AbarSeq只包含Foo其中bar不是None。下面是我現在已經實現,但它調用get的事實讓我覺得有一個更好的方式來做到這一點:

val seqOfTuples = seqOfFoos.collect { 
    case foo if foo.bar.isDefined => (foo, foo.bar.get) 
} 

回答

8
val seqOfTuples = seqOfFoos.collect { 
    case f @ Foo(_, Some(a), _) => (f, a) 
} 

您可能需要調整下劃線的數量,取決於有多少其他參數Foo有。