gpt4 book ai didi

Scala 流及其内存使用

转载 作者:行者123 更新时间:2023-12-04 00:48:07 37 4
gpt4 key购买 nike

据我了解,Stream保留最近评估的元素。我猜它不会保留所有评估过的元素(这是不可行的),所以它可能使用了一些内部“缓存”。

这是正确的吗?我可以控制这个缓存的大小和策略吗?

最佳答案

流就像列表,根据需要生成其成员。一旦生成了一个元素,它就会保留在流中并被重用。

例如:

lazy val naturals: Stream[Int] = Stream.cons(0, naturals.map{_ + 1})

会给你一个自然数流。如果我打电话
naturals(5)

它将生成元素 0-5 并返回 5,如果我然后调用
naturals(8)

它将重用前 6 个元素并再生成 3 个。

如果您担心内存使用情况,可以使用 Stream.drop(num)使用 num 生成新流元素从一开始就被删除,允许被截断的元素与旧流一起被垃圾收集。例如:
naturals(5) //returns 5
val truncated = naturals.drop(4)
truncated(5) //returns 9

关于Scala 流及其内存使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8566532/

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