gpt4 book ai didi

reduce - 如何在空的 Kotlin 数组上调用 reduce?

转载 作者:IT老高 更新时间:2023-10-28 13:28:14 27 4
gpt4 key购买 nike

空数组上的简单reduce会抛出:

线程“main”java.lang.UnsupportedOperationException 中的异常:无法减少空的可迭代对象。

链接时同样的异常:

val a = intArrayOf()

val b = a.reduce({ memo, next -> memo + next }) // -> throws an exception

val a1 = intArrayOf(1, 2, 3)

val b1 = a.filter({ a -> a < 0 }).reduce({ a, b -> a + b }) // -> throws an exception

是reduce的预期操作还是一个bug?

有什么解决方法吗?

最佳答案

异常是正确的,reduce 不适用于空的可迭代或数组。您可能正在寻找的是 fold,它接受一个起始值和一个操作,该操作连续应用于可迭代的每个元素。 reducefirst 元素作为起始值,因此不需要额外的值作为参数传递,但要求集合不为空。

fold的示例用法:

println(intArrayOf().fold(0) { a, b -> a + b })  // prints "0"

关于reduce - 如何在空的 Kotlin 数组上调用 reduce?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35660843/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com