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

20

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

2个回答

30
TLDR:没有区别,最终sumBy/sumByDouble可以被单独的sumOf替代。 sumOf操作对于从选择器函数返回的不同数值类型具有重载。在旧的类型推断工具无法做到这一点时,需要使用不同名称的函数来处理不同的数值类型:sumBy用于int求和,sumByDouble用于double求和等。
当新的推断功能通过选择器lambda返回类型的重载解析实验性支持后最终到来时,我们决定不重载现有的sumBy函数,而是引入一个新的操作sumOf。 这样它的破坏可能性更小,并且与新操作list.minOf/maxOf { selector }的命名更加一致。

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

6
根据 Kotlin 1.4 的更新日志所述:sumOf 可以让你以相同的方式处理不同类型的求和。它可以产生类型为 IntLongDouble 的求和结果,具体取决于给定 lambda 表达式的返回类型。请参考:Kotlin 1.4 更新日志

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接