0

我有这个使用 foldright 附加两个列表的函数

def append[T](l1: List[T], l2: List[T]): List[T] = (l1 :\ l2) ((a,b) => a::b)

斯卡拉返回:

val l1 = List(1,2,3,4,5)
val l2 = List(6,7,8,9,10)
println(append(l1,l2))
Result: List(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)

从右到左开始,结果不应该是相反的吗?为什么以这种方式返回?

4

1 回答 1

3

foldRight 是从右到左执行的,所以迭代是,

1:a 为 5,b 为 6、7、8、9、10,结果为 5、6、7、8、9、10

2:a 为 4,b 为 5、6、7、8、9、10,结果为 4、5、6、7、8、9、10

...

最终结果是 1, 2, 3, ..., 8, 9, 10

于 2012-12-25T13:58:01.867 回答