Quale funzione Scala sostituire questa dichiarazione procedurale?
-
30-10-2019 - |
Domanda
Mindblock qui, ma non riesco a capire come renderlo meno brutto:
def getClosestSphere(ray: Ray, spheres: List[Sphere]): Sphere = {
val map = new HashMap[Double, Sphere]
for (sphere <- spheres) {
val intersectPoint = sphere.intersectRay(ray)
map.put(intersectPoint, sphere)
}
map.minBy(_._1)._2
}
Riesci a vedere cosa sto facendo? Ho un elenco di sfere, in cui ogni sfera ha un metodo intersectray, restituendo un doppio.
Voglio prendere la sfera con il risultato più piccolo di quella funzione. So che c'è un bel costrutto funzionale per farmi fare in una riga, non riesco proprio a vederlo :(
Nessuna soluzione corretta
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow