gpt4 book ai didi

list - Scala:为什么 foldLeft 不能用于两个列表的连接?

转载 作者:行者123 更新时间:2023-12-04 17:00:05 25 4
gpt4 key购买 nike

使用 foldRight 定义如下 concat 函数可以正确 concat list

def concat[T](xs: List[T], ys: List[T]): List[T] = (xs foldRight(ys))(_ :: _)

但是用 foldLeft 这样做
def concat1[T](xs: List[T], ys: List[T]): List[T] = (xs foldLeft(ys))(_ :: _)

导致编译错误 value :: is not a member of type parameter T ,需要帮助来理解这种差异。

编辑:

以防万一有人可能正在寻找有关折叠的详细解释
http://lampwww.epfl.ch/teaching/programmation_avancee/documents/programmation_avancee_5_en-2x2.pdf

最佳答案

参数顺序在 foldLeftfoldRight 中的不同.

xs.foldRight(ys){(element, aggregator) => element :: aggregator}

xs.foldLeft(ys){(aggregator, element) => element :: aggregator}
foldLeft 的占位符语法- (_ :: _) - 你正在尝试做这样的事情: aggregator :: element .这个 means element.::(aggregator)并且没有 :: element 中的方法( element 的类型是 T )。

关于list - Scala:为什么 foldLeft 不能用于两个列表的连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26501865/

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