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,但现在我开始认为一本书可能更好。