Kotlin 1.4 中新的
sumOf()
函数与 sumBy()
或 sumByDouble()
函数有何不同?
TLDR:没有区别,最终可以弃用
sumBy
/sumByDouble
,转而使用单个 sumOf
。
sumOf
操作对选择器函数返回的不同数字类型有重载。这在以前的旧类型推断工具中是不可能的,因此为了处理不同的数字类型,需要具有不同名称的函数:sumBy
对整数求和,sumByDouble
对双精度求和等。
当新的推理最终在选择器 lambda 返回类型的重载解析的实验支持下到来时,我们决定不重载现有的
sumBy
函数,而是引入新的操作 sumOf
。这样,破坏某些东西的机会就更少,并且与新操作的命名更加一致list.minOf/maxOf { selector }
。
如Kotlin 1.4 变更日志所述:
...
让您可以以相同的方式处理不同类型的总和。 它产生类型sumOf
、Int
、Long
,... [取决于给定 lambda 的返回类型]。Double