我有以下类型: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) }
我得到以下内容:
error:Expression of type (List[Int],Set[Int]) doesn't conform to expected type B_
我做错了什么?
答案 0 :(得分:8)
reduceLeft
的签名如下所示:
def reduceLeft[B >: A](op: (B, A) ⇒ B): B
B
是我们的累加器和返回类型。为了编译它,我们需要帮助编译器一点,并告诉它我们希望它是什么类型:
l.reduceLeft[(List[Int], Set[Int])] {
case ((a1, b1), (a2, b2)) => if ((b1 & b2).nonEmpty) (a1 ::: a2, b1 | b2) else (a1, b1)
}