0

2つのリストを追加するために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 に答える