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

问题描述 投票:0回答:2

Kotlin 1.4 中新的

sumOf()
函数与
sumBy()
sumByDouble()
函数有何不同?

kotlin collections kotlin-stdlib
2个回答
31
投票

TLDR:没有区别,最终可以弃用

sumBy
/
sumByDouble
,转而使用单个
sumOf

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

当新的推理最终在选择器 lambda 返回类型的重载解析的实验支持下到来时,我们决定不重载现有的

sumBy
函数,而是引入新的操作
sumOf
。这样,破坏某些东西的机会就更少,并且与新操作的命名更加一致
list.minOf/maxOf { selector }


6
投票

Kotlin 1.4 变更日志所述:

...

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

© www.soinside.com 2019 - 2024. All rights reserved.