Ho lavorato su un progetto in scala, ma ricevo alcuni messaggi di errore che non capisco. Le classi con cui sto lavorando sono relativamente semplici. Per esempio:Ho bisogno di aiuto per capire gli errori dello scalatore
abstract class Shape
case class Point(x: Int, y: Int) extends Shape
case class Polygon(points: Point*) extends Shape
Supponiamo ora che creo un poligono:
val poly = new Polygon(new Point(2,5), new Point(7,0), new Point(3,1))
Poi, se si tenta di determinare la posizione e le dimensioni del rettangolo più piccolo possibile che potrebbero contenere il poligono, ottengo vari errori che non capisco.
Di seguito sono riportati frammenti di tentativi diversi e i corrispondenti messaggi di errore che producono.
val upperLeftX = poly.points.reduceLeft(Math.min(_.x, _.x))
dà l'errore:
"mancante tipo di parametro per la funzione espansa ((x $ 1) => x $ 1.x)"
val upperLeftX =
poly.points.reduceLeft((a: Point, b: Point) => (Math.min(a.x, b.x)))
dà questo errore:
"tipo mancata corrispondenza:
trovato: (Punto, Punto) => Int
richiesto: (Qualsiasi, Punto) => Qualsiasi "
Sono molto confuso su entrambi questi messaggi di errore. Se qualcuno potesse spiegare più chiaramente cosa sto facendo in modo errato, lo apprezzerei molto. Sì, vedo che il secondo errore dice che ho bisogno di digitare "Qualsiasi" ma non capisco esattamente come implementare un cambiamento che funzionerebbe come ho bisogno. Ovviamente cambiare semplicemente "a: Point" in "a: Any" non è una soluzione praticabile, quindi cosa mi manca?
Ok ... Penso di averlo capito davvero. Grazie per la spiegazione! – klactose