Scala:为什么foldLeft不能用于两个列表的连续?
发布时间:2020-12-16 18:41:27 所属栏目:安全 来源:网络整理
导读:使用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))(_ :: _) 导致编译错误
使用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))(_ :: _) 导致编译错误值::不是类型参数T的成员,需要帮助理解这种差异. 编辑: 以防万一有人可能正在寻找折叠的详细解释 解决方法
foldLeft中的参数顺序与foldRight中的参数顺序不同.
xs.foldRight(ys){(element,aggregator) => element :: aggregator} xs.foldLeft(ys){(aggregator,element) => element :: aggregator} 使用foldLeft – (_ :: _)的占位符语法 – 您正在尝试执行以下操作:aggregator :: element.这个means元素.:( aggregator)并且元素中没有::方法(元素的类型是T). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |