raparicio6 / nuevo-foro-fiuba

0 stars 0 forks source link

El collect no tiene que tener efecto secundario #4

Open maurociancio opened 6 years ago

maurociancio commented 6 years ago

def calificacionesPositivas = calificaciones.findAll { calificacion -> Puntaje.TipoPuntaje.getProporcion(calificacion.puntaje.tipo) > 0 } calificacionesPositivas.collect { calificacion -> def numeroPuntaje = calificacion.puntaje.numero (numeroPuntaje > this.promedioCalificaciones) ? (contador += Puntaje.TipoPuntaje.getProporcion(calificacion.puntaje.tipo) numeroPuntaje) : (contador += this.promedioCalificaciones + numeroPuntaje 0.05) }

ahí además de convetir la lista están actualizando un contador. Tienen que ser operaciones separadas

maurociancio commented 6 years ago

calificacionesNegativas.collect {calificacion -> promedioDeCalificaciones += Puntaje.TipoPuntaje.getProporcion(calificacion.puntaje.tipo) * calificacion.puntaje.numero }

acá tiene pinta de que necesitan un .sum()

raparicio6 commented 6 years ago

Gracias por los comentarios! Ahora que me lo explicaste y que volví a leer la definición de collect, ahí no estoy haciendo lo que pretendía. Eso que hice es como un map, y yo busco iterar la lista e ir alterando la variable contador, pero dejando la lista igual. Mañana voy a reescribirlo. Lo del sum no me acordaba del mismo, voy a volver a leer a ver qué hace así lo puedo utilizar