gpt4 book ai didi

scala - 流中的惰性求值?

转载 作者:行者123 更新时间:2023-12-05 01:00:41 24 4
gpt4 key购买 nike

给定一个 lazy val :

scala> lazy val y = {println("Y!"); 200}
y: Int = <lazy>

我试着把 yStream - 了解它是否会被急切或懒惰地评估。
scala> Stream(100, y)
Y!
res4: scala.collection.immutable.Stream[Int] = Stream(100, ?)

显然,它被热切地评估。

除了以下内容,我如何创建 Stream懒惰地评估其成员?
scala> Stream[() => Int](() => 100, () => 200)
res18: scala.collection.immutable.Stream[() => Int] = Stream(<function0>, ?)

scala> res18.map(_())
res19: scala.collection.immutable.Stream[Int] = Stream(100, ?)

scala> res19.last
res20: Int = 200

scala> res19
res21: scala.collection.immutable.Stream[Int] = Stream(100, 200)

最佳答案

Stream.apply接受可变参数参数,并且在 Scala 中不可能有按名称可变参数参数。您可以使用 #::流的语法,虽然:

scala> lazy val y = {println("Y!"); 200}
y: Int = <lazy>

scala> val s = 100 #:: y #:: Stream.empty
s: scala.collection.immutable.Stream[Int] = Stream(100, ?)

scala> s.last
Y!
res0: Int = 200

这是有效的,因为 ConsWrapper用于添加 #:: 的类和隐式转换to 流都采用 by-name 参数。

关于scala - 流中的惰性求值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29269494/

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