gpt4 book ai didi

Scala:突破 foldLeft

转载 作者:行者123 更新时间:2023-12-05 08:49:04 27 4
gpt4 key购买 nike

假设我们有 Seq val ourSeq = Seq(10,5,3,5,4)

我想返回一个新的列表,它从左边读取并在看到重复的数字时停止(例如 Seq(10,5,3) 因为 5 是重复的)。

我正在考虑使用 fold left 本身

ourSeq.foldLeft(Seq())(op = (temp, curr) => {

if (!temp.contains(curr)) {
temp :+ curr
} else break

})

但据我了解,没有办法跳出foldLeft

最佳答案

虽然它可以foldLeft()没有任何突破来完成,但我认为fold 是这项工作的错误工具。

我比较喜欢 unfold(),它是在 Scala 2.13.0 中引入的。

val ourSeq = Seq(10,5,3,5,4)
Seq.unfold((Set.empty[Int],ourSeq)){ case (seen,ns) =>
Option.when(ns.nonEmpty && !seen(ns.head)) {
(ns.head, (seen+ns.head, ns.tail))
}
}
//res0: Seq[Int] = Seq(10, 5, 3)

关于Scala:突破 foldLeft,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64997932/

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