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
scroll top