gpt4 book ai didi

scala - Stream.last 评估

转载 作者:行者123 更新时间:2023-12-04 04:35:27 25 4
gpt4 key购买 nike

让我们定义一个 Stream[Int]带元素 (1,2,3) .

scala> val x = Stream(1,2,3)
x: scala.collection.immutable.Stream[Int] = Stream(1, ?)
x显示为 Stream(1, ?)因为,据我了解,它是按需评估的,即在必要时。

然后,我调用 x.last .
scala> x.last
res0: Int = 3

最后,我调用 x再次看到它的值(value)。
scala> x
res1: scala.collection.immutable.Stream[Int] = Stream(1, 2, 3)

是否 x等于 Stream(1,2,3)因为我调用 x.last ,导致访问所有值(在列表中从左到右)?

最佳答案

来自 APi 文档:“Stream 类还采用记忆化,以便将先前计算的值从 Stream 元素转换为具体值”

另一件可能与直觉相反的事情似乎是您的流应该是不可变的事实之间的矛盾......但文档明确表示“虽然流实际上在访问期间被修改,但这并没有改变其不变性的概念。一旦记住了这些值,它们就不会改变,尚未记住的值仍然“存在”,只是还没有实现。” (取自:http://www.scala-lang.org/api/current/scala/collection/immutable/Stream.html)

所以换句话说你是对的=)

关于scala - Stream.last 评估,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19827526/

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