创建从高到低范围的流

时间:2014-03-23 00:54:35

标签: scala

可以通过指定低和高范围来创建流:

scala> val x = Stream.range(1, 999)
x: scala.collection.immutable.Stream[Int] = Stream(1, ?)

但是如果我尝试以相反的顺序制作一个Stream,我会得到一个空的。

scala> val y = Stream.range(999, 1)
y: scala.collection.immutable.Stream[Int] = Stream()

另外,如果我尝试简单地反转x,那么整个流将变为评估

scala> x.reverse
res16: scala.collection.immutable.Stream[Int] = Stream(998, 997, 996, 995, 994, 
  993, 992, 991, 990, 989, 988, 987, 986, 985, 984, 983, 982, 981, 980, ...

那么,如何创建一个具有hi to low特定范围的流而不先对其进行评估,然后再toStream呢?

1 个答案:

答案 0 :(得分:4)

Stream.range有一个带有步骤参数的重载:

Stream.range(999, 0, -1)

这将为您提供一个(懒惰)流,从999开始向下延伸到1(包括)