List.view和LazyList有什么区别? [英] What is the difference between List.view and LazyList?

查看:60
本文介绍了List.view和LazyList有什么区别?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I am new to Scala and I just learned that LazyList was created to replace Stream, and at the same time they added the .view methods to all collections.

所以,我想知道为什么在我们可以执行 List.view 时,将 LazyList 添加到Scala集合库中?

So, I am wondering why was LazyList added to Scala collections library, when we can do List.view?

我只是看了Scaladoc,看来唯一的区别是 LazyList 具有备注,而 View 没有.我是对还是错?

I just looked at the Scaladoc, and it seems that the only difference is that LazyList has memoization, while View does not. Am I right or wrong?

推荐答案

Stream 元素被懒惰地实现,除了第一(头部)元素.这被视为一种缺陷.

Stream elements are realized lazily except for the 1st (head) element. That was seen as a deficiency.

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

A List view is re-evaluated lazily but, as far as I know, has to be completely realized first.

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>)

这篇关于List.view和LazyList有什么区别?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆