ReduceLeft with Vector of pairs?
问题描述:
我有双ReduceLeft with Vector of pairs?
Vector((9,1), (16,2), (21,3), (24,4), (25,5), (24,6), (21,7), (16,8), (9,9), (0,10))
的载体,我想在对最大的第一要素返回对。 我试过它这样做:
data reduceLeft[(Int, Int)]((y:(Int, Int),z:(Int,Int))=>y._1 max z._1)
和
data reduceLeft((y:(Int, Int),z:(Int,Int))=>y._1 max z._1)
但类型不匹配的错误,我不明白什么是错的这个代码。
答
为什么使用reduceLeft? 只是默认最大值方法效果非常好
scala> val v = Vector((9,1), (16,2), (21,3), (24,4), (25,5), (24,6), (21,7), (16,8), (9,9), (0,10))
v: scala.collection.immutable.Vector[(Int, Int)] = Vector((9,1), (16,2), (21,3), (24,4), (25,5), (24,6), (21,7), (16,8), (9,9), (0,10))
scala> v.max
res1: (Int, Int) = (25,5)
如果你想reduceLeft代替:
v.reduceLeft((x, y) => if (x._1 >= y._1) x else y)
你的错误是你必须返回一个元组,而不是一个int
y._1 max z._1
的两个int的max函数返回一个int。
答
max
在这个例子中很有效。但是,如果你想知道如何做到这一点使用reduceLeft
在这里它是:?如何在一个元组的列表中找到MAX]
val v = Vector((9,1), (16,2), (21,3), (24,4), (25,5), (24,6), (21,7), (16,8), (9,9), (0,10))
v.reduceLeft((x:(Int, Int), y:(Int,Int)) => if(y._1 > x._1) y else x)
的
可能重复(http://stackoverflow.com/questions/15769366/如何找到的-MAX-IN-A-列表的元组) – lmcphers