He estado trabajando en un proyecto en scala, pero recibo algunos mensajes de error que no entiendo del todo. Las clases con las que estoy trabajando son relativamente simples. Por ejemplo:Necesito ayuda para descifrar los errores del compilador de scala
abstract class Shape
case class Point(x: Int, y: Int) extends Shape
case class Polygon(points: Point*) extends Shape
Ahora supongamos que yo crear un polígono:
val poly = new Polygon(new Point(2,5), new Point(7,0), new Point(3,1))
Entonces si intento para determinar la ubicación y el tamaño del más pequeño rectángulo posible que pudiera contener el polígono, consigo varios errores que no entiendo del todo.
A continuación se muestran fragmentos de diferentes intentos y los mensajes de error correspondientes que producen.
val upperLeftX = poly.points.reduceLeft(Math.min(_.x, _.x))
da el error:
"faltante tipo de parámetro para la función ampliada ((x $ 1) => x $ 1.x)"
val upperLeftX =
poly.points.reduceLeft((a: Point, b: Point) => (Math.min(a.x, b.x)))
da este error:
"tipo discordancia;
encontrado: (Punto, Punto) => Int
requerido: (Cualquiera, Punto) => Cualquier "
Estoy muy confundido acerca de estos dos mensajes de error. Si alguien pudiera explicar más claramente lo que estoy haciendo incorrectamente, realmente lo agradecería. Sí, veo que el segundo error dice que necesito escribir "Cualquiera", pero no entiendo exactamente cómo implementar un cambio que funcione como lo necesito. Obviamente, simplemente cambiar "a: Point" por "a: Any" no es una solución viable, entonces ¿qué me estoy perdiendo?
Ok ... Creo que realmente lo entendí. ¡Gracias por la explicación! – klactose