![](/img/trans.png)
[英]How to return every nth even number in a list with foldLeft in Scala?
[英]Scala: Why foldLeft can't work for an concat of two list?
使用foldRight定义如下的concat函数可以正确连接列表
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
foldLeft
参数顺序与foldLeft
参数顺序foldRight
。
xs.foldRight(ys){(element, aggregator) => element :: aggregator}
xs.foldLeft(ys){(aggregator, element) => element :: aggregator}
使用foldLeft
- (_ :: _)
占位符语法 - 您正在尝试执行以下操作: aggregator :: element
。 这意味着 element.::(aggregator)
并且没有::
在方法element
(的类型element
是T
)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.