用于结束流的Scala简写?

时间:2014-04-25 21:09:04

标签: scala

在使用Streams练习时,我发现了一个像这样结束流的常见模式:

Stream.cons(lastValue, Stream.empty)

这似乎是一种常见的模式,可能是一种速记。也许是这样的?

Stream.finish(lastValue) // Not actual Scala code

Scala内置了这样的功能吗?

2 个答案:

答案 0 :(得分:9)

自然选择Stream(lastValue)一般不起作用,因为apply不是懒惰的,但是当你不在乎你已经分配了值时,你可以使用它。 / p>

当你想要懒惰地计算这个值时,你可以使用Stream.fill(1)(lastValue),但是为什么人们会使用这个结构并不是很明显(例如,如果你想要一个非1的数字,它会让人怀疑)。 / p>

我赞成

lastValue #:: Stream.empty

亲自。

答案 1 :(得分:1)

试试Stream(lastValue)。我认为你需要结束一个Stream。

您可以像

一样使用它
3 #:: Stream(4)