我无法让Point
班级通过一次x
操作搜索reduce
坐标最大值(以下我使用map
然后reduce
)< / p>
case class Point(x : Double, y : Double)
val pts = List(Point(1,3), Point(-3,2), Point(5,3))
pts.map(p => p.x).reduce( _ max _ )
这将返回
res22: Double = 5.0
如何使用单个reduce操作来获取x
的最大值?我尝试了以下方法,但没有得到我期望的结果。
pts.reduce( _.x max _.x )
<console>:11: error: type mismatch;
found : Double
required: Point
答案 0 :(得分:2)
您可以使用foldLeft
来获得双倍的结果:
pts.foldLeft(Double.MinValue)(_ max _.x)
或者您可以使用reduce
继续传递Point
并随后将x
拉出来:
pts.reduce((a, b) => if (a.x > b.x) a else b).x
答案 1 :(得分:1)
使用reduce
和max
pts.map(_.x).reduce( (a,v) => a max v)
在List[Point]
中找到最大值的其他方法包括
pts.map(_.x).max