gpt4 book ai didi

scala - 在 Scala 中使用折叠实现分区函数

转载 作者:行者123 更新时间:2023-12-01 22:31:37 25 4
gpt4 key购买 nike

我是 Scala 的新手,我想编写一个高阶函数(比如“partition2”),它接受一个整数列表和一个返回 true 或 false 的函数。输出将是函数为真的值列表和函数为假的值列表。我想用折叠来实现这个。我知道这样的事情是一种非常简单的方法:

val (passed, failed) = List(49, 58, 76, 82, 88, 90) partition ( _ > 60 )

我想知道如何使用折叠来应用相同的逻辑。

最佳答案

您可以先考虑您希望累加器的外观。在许多情况下,它的类型与您最终想要得到的东西的类型相同,这在此处起作用 — 您可以使用两个列表来跟踪通过和失败的元素。然后你只需要编写案例并将元素添加到适当的列表中:

List(49, 58, 76, 82, 88, 90).foldRight((List.empty[Int], List.empty[Int])) {
case (i, (passed, failed)) if i > 60 => (i :: passed, failed)
case (i, (passed, failed)) => (passed, i :: failed)
}

我在这里使用右折叠,因为在列表前添加比替代方案更好,但您可以轻松重写它以使用左折叠。

关于scala - 在 Scala 中使用折叠实现分区函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29333352/

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