减少元组

Eli*_*lin 1 scala

我有以下类型: val l:Seq[(List[Int],Set[Int])] = ...

我试图将其减少如下:

l.reduceLeft {  
    case ((a1,b1),(a2,b2)) => if((b1 & b2).nomEmpty) ((a1:::a2),(b1 | b2)) else (a1,b1) }
Run Code Online (Sandbox Code Playgroud)

我得到以下内容:

error:Expression of type (List[Int],Set[Int]) doesn't conform to expected type B_ 
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

Yuv*_*kov 8

签名reduceLeft看起来像这样:

def reduceLeft[B >: A](op: (B, A) ? B): B
Run Code Online (Sandbox Code Playgroud)

B是我们的累加器和返回类型.为了编译它,我们需要帮助编译器一点,并告诉它我们希望它是什么类型:

l.reduceLeft[(List[Int], Set[Int])] {
  case ((a1, b1), (a2, b2)) => if ((b1 & b2).nonEmpty) (a1 ::: a2, b1 | b2) else (a1, b1)
}
Run Code Online (Sandbox Code Playgroud)