我是Scala的新手,我刚刚了解到创建了LazyList来替换Stream,同时他们将.view方法添加到了所有集合中。

因此,我想知道为什么在我们可以执行LazyList的情况下将List.view添加到Scala集合库中?

我只是看了Scaladoc,似乎唯一的区别是LazyList具有备忘录,而View没有。我是对还是错?

最佳答案

除了第一个(head)元素之外,Stream元素的实现是延迟实现的。这被视为一种缺陷。

我很懒惰地重新评估了List视图,但据我所知,必须首先完全实现它。

def bang :Int = {print("BANG! ");1}

LazyList.fill(4)(bang)  //res0: LazyList[Int] = LazyList(<not computed>)
Stream.fill(3)(bang)    //BANG! res1: Stream[Int] = Stream(1, <not computed>)
List.fill(2)(bang).view //BANG! BANG! res2: SeqView[Int] = SeqView(<not computed>)

08-28 17:38