我有以下类型: 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)
我究竟做错了什么?
签名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)