Scala是结束流的缩写吗?
在使用流的实践中,我发现了一种结束流的常见模式,如下所示:Scala是结束流的缩写吗?,scala,Scala,在使用流的实践中,我发现了一种结束流的常见模式,如下所示: Stream.cons(lastValue, Stream.empty) 这似乎是一种很常见的模式,可能有速记。也许是这样 Stream.finish(lastValue) // Not actual Scala code Scala中内置了这样一个函数吗?自然选择,流(lastValue),通常不起作用,因为apply并不懒惰,但您可以在不在乎已经分配了值的情况下使用它 当您希望延迟计算值时,可以使用Stream.fill(1)(
Stream.cons(lastValue, Stream.empty)
这似乎是一种很常见的模式,可能有速记。也许是这样
Stream.finish(lastValue) // Not actual Scala code
Scala中内置了这样一个函数吗?自然选择,
流(lastValue)
,通常不起作用,因为apply
并不懒惰,但您可以在不在乎已经分配了值的情况下使用它
当您希望延迟计算值时,可以使用Stream.fill(1)(lastValue)
,但不清楚为什么要使用此构造(例如,它让人怀疑您是否需要1以外的数字)
我愿意
lastValue #:: Stream.empty
个人。尝试流(lastValue)
。我认为这就是结束一条流所需要的
你可以像这样使用它
3 #:: Stream(4)
lastValue#:::Stream.empty
看起来像列表使用的lastValue::Nil
的流版本。那么,为什么不像我们处理列表那样使用Stream(lastValue)
呢List(lastValue)
Stream.apply
并不懒惰,但是如果你用它来结束一个流,你可以得到类似3::Stream(“a.toInt”)
的东西。只有当我们使用第二个元素时,才会出现错误。@LRLucena-是的,在这种情况下,您可以这样做。但就我个人而言,我更喜欢视觉化的3::“a”.toInt::Stream.empty
。事实上,不是。我正试图通过解决ProjectEuler问题来学习Scala,但现在我开始认为一本书可能更好。