gpt4 book ai didi

scala - 如何通过计算所有中间值在 Scala 中从以前的列表中创建一个新列表?

转载 作者:行者123 更新时间:2023-12-02 08:21:01 24 4
gpt4 key购买 nike

我在 Scala 中有一个 String 列表。我想创建一个新列表,其中每个元素都是前一个列表中的对应元素,并在该列表元素之前附加尽可能多的 \n 。像这样:

List("a\nb\nc","\nd","e") => List("a\nb\nc","\n\n\nd","\n\n\ne")

没有新的 \n 附加到第一个,2 个额外附加到第二个(因为第一个有 2 个)和三个(第一个和第二个的累积)到第三个。

我发现这个问题有点介于 foldyield 结构之间。在 Scala 中不使用任何可变变量的情况下实现此目标的最佳方法是什么?

最佳答案

好吧,没有人会禁止您将 List 用作折叠的累加器并将您的状态放在那里。我将计算“f”字符,因为它更易于调试:

val lf = List("afbfc", "fd", "e")
def count_char(s: String) = s.count(_ == 'f')
val fold_res = lf.foldLeft((List[String](), 0)) ((acc, next_string) =>
(("f" * acc._2 + next_string) +: acc._1,
count_char(next_string) + acc._2))
fold_res._1.reverse

关于scala - 如何通过计算所有中间值在 Scala 中从以前的列表中创建一个新列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37353866/

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