Kotlin 1.4 中 sumOf() 和 sumBy() 有什么区别?

Mah*_*zad 15 collections kotlin

sumOf()Kotlin 1.4 中的新函数与sumBy()sumByDouble()函数有何不同?

Ily*_*lya 23

TLDR:没有区别,最终sumBy/sumByDouble可以被弃用,取而代之的是单个sumOf.

sumOf操作具有从选择器函数返回的不同数字类型的重载。这在以前使用旧的类型推断工具是不可能的,因此为了处理不同的数字类型,需要具有不同名称的函数:sumBy对整数求和,sumByDouble对双精度求和等。

当新的推理最终通过选择器 lambda 返回类型的重载解析的实验支持到来时,我们决定不重载现有sumBy函数,而是引入新的操作sumOf。这样,它破坏某些东西的机会更少,并且在命名与新操作方面更加一致list.minOf/maxOf { selector }

  • 你两年前就看到了它的到来!我现在可以报告说,“sumBy()”现已被弃用,取而代之的是“sumOf()”,正如 Ilya 所正确预测的那样。 (2认同)

Mah*_*zad 6

正如Kotlin 1.4 变更日志所述:

...sumOf让您以相同的方式处理不同类型的总和。它产生类型Int, Long, Double, ... [取决于给定 lambda 的返回类型] 的总和。