Scala减少Point类

时间:2015-09-11 02:19:16

标签: scala reduce

我无法让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

2 个答案:

答案 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)

使用reducemax

pts.map(_.x).reduce( (a,v) => a max v)

List[Point]中找到最大值的其他方法包括

pts.map(_.x).max