gpt4 book ai didi

scala - 在Scala中, "view"有什么作用?

转载 作者:行者123 更新时间:2023-12-02 23:31:47 25 4
gpt4 key购买 nike

具体来说,我正在研究问题 1

http://pavelfatin.com/scala-for-project-euler/

列出的代码如下

val r = (1 until 1000).view.filter(n => n % 3 == 0 || n % 5 == 0).sum

我可以关注除“查看”之外的所有内容。事实上,如果我取出 View ,代码仍然可以编译并产生完全相同的答案。

最佳答案

View 生成一个惰性集合,以便调用例如filter 不会评估集合中的每个元素。元素仅在显式访问后才会被评估。现在 sum 确实可以访问所有元素,但使用 view 时,对 filter 的调用不会创建完整的 Vector。 (参见史蒂夫的评论)

使用 View 的一个很好的例子是:

scala> (1 to 1000000000).filter(_ % 2 == 0).take(10).toList
java.lang.OutOfMemoryError: GC overhead limit exceeded

这里 Scala 尝试创建一个包含 1000000000 元素的集合,然后访问前 10 个元素。但是使用 View :

scala> (1 to 1000000000).view.filter(_ % 2 == 0).take(10).toList
res2: List[Int] = List(2, 4, 6, 8, 10, 12, 14, 16, 18, 20)

关于scala - 在Scala中, "view"有什么作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6799648/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com