¿En qué se diferencia la nueva función sumOf()
de Kotlin 1.4 de las sumBy()
o sumByDouble()
?
Como dice el registro de cambios de Kotlin 1.4 :
...
sumOf
le permite manejar sumas de diferentes tipos de la misma manera . produce sumas de los tiposInt
,Long
,Double
, ... [dependiendo del tipo de retorno de la lambda dada].
TLDR : no hay diferencia, y eventualmente sumBy
/ sumByDouble
puede quedar obsoleto a favor del único sumOf
.
La operación sumOf
tiene sobrecargas para diferentes tipos numéricos devueltos por la función selectora. Es algo que antes era imposible con la antigua función de inferencia de tipos, por lo que para manejar diferentes tipos numéricos se requería tener funciones con diferentes nombres: sumBy
para sumar enteros, sumByDouble
para sumar dobles, etc.
Cuando finalmente llegó la nueva inferencia con el soporte experimental de resolución de sobrecarga mediante el tipo de retorno selector lambda, decidimos no sobrecargar la función sumBy
existente, sino introducir una nueva operación sumOf
. De esta forma, tiene menos posibilidades de romper algo y es más consistente al nombrar con las nuevas operaciones list.minOf/maxOf { selector }
.